多线程如何在java中更新线程中使用的变量的值
在java程序中,我跨多个线程运行相同的函数。 我想做的是--
- 识别特定的运行线程——例如,如果有两个运行线程,如何从外部函数访问其中一个线程?(外部函数是具有线程的同一java应用程序的一部分)
- 假设有一个名为“x”的变量正在上述两个线程中使用。我可以在thread1和thread2中分别存储和检索“x”的值吗?这是线程中使用的任何变量的默认行为吗李>
- 访问/更新特定线程中变量的值——例如,我希望在“线程1”中使用“x”时更新它的值李>
- 终止一个(特定)正在运行的线程。例如,我希望终止线程1(从上面的2个运行线程)李>
# 1 楼答案
回答
ThreadUtil
的Util类及其内部有一个static Set<Thread>
。您可以添加创建的线程,以便在线程完成执行时进行设置和删除。 或者,您可以从ThreadPoolExecutor
扩展并重写方法beforeExecute
,afterExecute
方法来执行上述相同的操作。您可以使用集合来获取正在运行的线程。如果要按名称存储和检索,可以使用映射李>ThreadLocal
类实现。请参阅this关于如何使用ThreadLocal
的帖子ThreadLocal
boolean stop
)来执行此操作,以及将此标志设置为true
的方法