如何在java中更新线程中使用的变量的值

时间:2013-02-05 06:25:59

标签: java multithreading

在java程序中,我在多个线程中运行相同的功能。 我想做的是这个 -

  1. 识别特定的运行线程 - 例如,如果有2个正在运行的线程,我如何从外部函数访问其中一个线程? (外部函数是具有线程的同一Java应用程序的一部分)
  2. 假设有一个名为“x”的变量正在上面两个线程中使用。我可以在thread1和thread2中为“x”存储和检索单独的值吗?这是线程中使用的任何变量的默认行为吗?
  3. 访问/更新特定线程中变量的值 - 例如,我希望更新“x”的值,因为它在“线程1”中使用。
  4. 终止一个(特定)正在运行的线程。例如,我希望终止Thread1(来自上面的2个运行线程)。

1 个答案:

答案 0 :(得分:1)

的答案
  1. 有几种方法可以做到这一点。你可以; 名为ThreadUtil且内部的Util类具有static Set<Thread>。您可以添加您创建的线程,以便在线程完成执行时进行设置和删除。 或者您可以从ThreadPoolExecutor延伸并覆盖方法beforeExecuteafterExecute方法,以执行相同的操作。您可以使用该集来获取正在运行的线程。如果要按名称存储和检索,可以使用地图。
  2. 使用ThreadLocal类可以实现这一点。有关如何使用ThreadLocal
  3. 的信息,请参阅this
  4. 可能ThreadLocal
  5. 您可以在线程中使用标记(boolean stop)来执行此操作,并将此标记设置为true
  6. 的方法