我正在为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创建一个新线程是否性能过重和/或编码错误,如果是这样,我如何重用相同的线程来获得相同的行为。
或者,是否有更好的方法来处理这种情况?
提前感谢任何建议!
答案 0 :(得分:2)
是的,为每次阅读创建一个新线程对于您描述的需求来说是非常低效的。
相反,请考虑创建单个线程,List<your data type>
来保存读取,以及信号量来标记数据可用。您的线程读取每条消息,将其放入列表中,并将信号量发布到等待数据的任何内容。那个'什么'然后收到列表中的任何内容,直到它清空它,然后回到等待信号量。
答案 1 :(得分:0)
您需要一个读取线程和一个写入线程。两者都应该使用BlockingQueue与应用程序的其余部分进行交互。虽然我不明白为什么你会想要写多个线程。