1

我正在为 Android 手机编写一个简单的应用程序,以通过套接字连接与 PC 进行通信。

手机可以随时写或接收信息,计算机也可以。到目前为止我使用的解决方案是这样的:

Create a thread and call READ in it.
Run an infinte loop.
    Check if thread has finished,
        If so grab the READ and process,
        Then start a new thread also calling read.
    Check to see if another object working in another thread wants to write,
        If so grab and write.

具体来说,我使用 Android API 中的 AsyncTask 来运行线程。

一切正常,但我想知道为每个 READ 创建一个新线程是否性能太重和/或编码不好,如果是这样,我如何重用相同的线程以具有相同的行为。

或者,有没有更好的方法来处理这种情况?

提前感谢您的任何建议!

4

2 回答 2

2

是的,为每次读取创建一个新线程对于您描述的需求来说效率非常低。

相反,考虑创建一个线程,一个List<your data type>用于保存读取,一个信号量来标记数据可用。您的线程读取每条消息,将其放入列表中,并将信号量发布到等待数据的任何地方。'whatever' 然后接收列表中的任何内容,直到将其清空,然后返回等待信号量。

于 2012-06-19T20:30:55.170 回答
0

你需要一个读线程和一个写线程。两者都应该使用 BlockingQueue 与应用程序的其余部分交互。虽然我不明白为什么你会有多个线程想要写。

于 2012-06-19T22:52:56.273 回答