gpt4 book ai didi

java - 我应该为 Socket 上的每个读/写创建一个新线程吗?

转载 作者:行者123 更新时间:2023-11-29 22:04:28 26 4
gpt4 key购买 nike

我正在为 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 创建一个新线程是否性能太重和/或编码不好,如果是这样,我如何重用同一个线程以获得相同的行为。

或者,是否有更好的方法来整体处理这种情况?

提前感谢您的任何建议!

最佳答案

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

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

关于java - 我应该为 Socket 上的每个读/写创建一个新线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11108836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com