2013-02-05 51 views
0

在java程序中,我在多个线程中运行相同的函数。 我想要做的就是this--如何更新java中线程中使用的变量的值

  1. 确定具体的运行threads--例如,如果有2级运行的线程我怎样才能访问这些线程中的一个从外部函数? (外部函数是具有线程的同一个java应用程序的一部分)
  2. 假设在上述两个线程中都使用了一个名为“x”的变量。我可以在thread1和thread2中存储和检索“x”的单独值吗?这是线程中使用的任何变量的默认行为吗?
  3. 访问/更新特定线程中变量的值 - 例如,我希望更新“线程1”中使用的“x”的值。
  4. 终止一个(特定)正在运行的线程。例如,我希望终止Thread1(来自上面2个正在运行的线程)。
+0

你的意思跨线程访问? – Arpit

+0

不,我的意思是从一个函数中访问变量/特定线程,可以从正在运行的线程中单独调用... – Arvind

回答

1

答案为

  1. 有几种方法可以做到这一点的。你也可以; Util类名为ThreadUtil,里面有static Set<Thread>。只要线程执行完毕,就可以添加您创建的线程进行设置和删除。 或者您可以从ThreadPoolExecutor延伸并覆盖方法beforeExecute,afterExecute方法来做同样的事情。您可以使用该组来获取正在运行的线程。如果您想按名称存储和检索,则可以使用地图。
  2. 这可以通过使用ThreadLocal类。见this职位上如何使用ThreadLocal
  3. 可能与ThreadLocal
  4. 您可以使用一个标志(boolean stop)的线程来做到这一点,一个方法来这个标志设置为true
+0

+1,但我会建议用示例进行充实 –