在Android中从工作线程内部创建线程
在我的应用程序中,我需要进行一些TCP套接字调用 要做到这一点,我必须执行以下步骤: 1.将我的数据/命令转换为字节流 2.创建套接字并发送命令和接收响应 3.解析响应和存储以供UI使用 现在我已经创建了一个后台线程,可以完成所有三个步骤 但在我的socket客户端中,我还想为每个新命令创建一个新线程(步骤2) 这意味着在上述三个步骤的公共工作线程中有许多工作线程 那么,对于已经在工作线程中发生的步骤#2,可以使用异步任务吗。或者我在这种情况下使用普通线程 人们可能会想,为什么我不能在一个工作线程中完成所有三个步骤。 关键是,即使我只为所有套接字命令创建一个工作线程,步骤1的初始请求本身也可能来自工作线程 因此,我不能假设调用来自主UI线程。 另外,我想问,是否不建议在android中创建自己的工作线程,为什么 谢谢,在Android中从工作线程内部创建线程,android,multithreading,android-asynctask,worker-thread,Android,Multithreading,Android Asynctask,Worker Thread,在我的应用程序中,我需要进行一些TCP套接字调用 要做到这一点,我必须执行以下步骤: 1.将我的数据/命令转换为字节流 2.创建套接字并发送命令和接收响应 3.解析响应和存储以供UI使用 现在我已经创建了一个后台线程,可以完成所有三个步骤 但在我的socket客户端中,我还想为每个新命令创建一个新线程(步骤2) 这意味着在上述三个步骤的公共工作线程中有许多工作线程 那么,对于已经在工作线程中发生的步骤#2,可以使用异步任务吗。或者我在这种情况下使用普通线程 人们可能会想,为什么我不能在一个工作线
Sunny您不能使用AsyncTask进行此操作 异步任务只能是 但是,您可以使用标准线程 类神话阅读{
@override
public void run() {
......
// when needed - span a new working thread fro within old one
new MyOtherThread(...).start();
}
}
这里没问题
如果您觉得正在生成的线程数量可能会失控,那么使用。concurrent包有几个功能,例如。
线程池执行器
最后,如果您的任务是 是使用多线程架构传输大量小对象, 使用可能是最有效的方法
祝你好运。从前两段开始,我知道你想通过套接字建立一些通信。我不认为为每个命令创建一个线程是一个好方法,因为线程本身和打开/关闭套接字都是昂贵的操作。 我建议只创建一个线程来打开和监视/写入/读取套接字中的数据。如果这些命令频繁,则保持一个套接字处于活动状态比频繁打开/关闭套接字更合适。或者,我会创建一个额外的线程来完成序列化/反序列化命令的额外工作(如果它们非常耗时的话) 人们可能会想,为什么我不能在一个工作线程中完成所有三个步骤。关键是,即使我只为所有套接字命令创建一个工作线程,步骤1的初始请求本身也可能来自工作线程 我不认为这会对你的设计方法产生很大的影响 因此,我不能假设调用来自主UI线程。另外,我想问,是否不建议在android中创建自己的工作线程,为什么 Android提供了一些非常好的通用类,如AsyncTask和HandlerThread,用于一般用途,但如果上述类不符合设计要求,任何人都可以自由创建工作线程。如果我处理套接字编程,我个人会创建自己的工作线程 我建议看一看JavaNIO库,特别是选择器和SocketChannel类