我正在尝试使用多线程,实际上是一个线程池,用于一大组并发任务。不幸的是,线程需要使用的工具也是通过使用线程实现的,它由第三方提供。在线程内部使用线程是否安全?应该考虑什么或者应该完全避免它。
答案 0 :(得分:2)
应该考虑什么,或者应该完全避免。
需要考虑以下几点:
我所谈论的致命问题是线程递归地分叉其他线程并等待它们完成。如果使用无界线程池,则最终可能会出现不合理的线程数。如果你使用有界线程池,你可能会以死锁形式结束,所有线程都在使用中,并且(可能)所有线程都被阻塞,等待创建更多线程。
(听起来你的情景中有可能存在这种情况。)
答案 1 :(得分:1)
在线程内部使用线程是否安全?
如果库是线程安全的,您应该能够从多个线程中使用它。
应该考虑什么,或者应该完全避免。
如上所述,您应确保所涉及的所有类(库类和您的类)都是线程安全的。
就个人而言,我试图完全避免使用多个线程,或至少使用高级构造,例如使用java.util.concurrent
包中的类。
您可能想要阅读
答案 2 :(得分:1)
所有线程都在“内部”其他线程中使用。 (除了你开始的那些)
也许你可以更详细地解释你的疑问。
答案 3 :(得分:0)
我认为没有'Thread in a Thread'这样的概念 所有线程都由某个线程或其他线程调用。 (除了很少明显) 所以他们都有点并行工作。