0

在 java 程序中,我在多个线程中运行相同的函数。我想做的是这个——

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

1 回答 1

1

答案

  1. 有几种方法可以做到这一点。你可以;一个名为ThreadUtil和内部的 Util 类有一个static Set<Thread>. 您可以添加您创建的线程,以便在线程完成执行时设置和删除。或者您可以扩展ThreadPoolExecutor并覆盖方法beforeExecuteafterExecute方法来执行上述相同的操作。您可以使用该集合来获取正在运行的线程。如果要按名称存储和检索,可以使用地图。
  2. 这可以通过使用ThreadLocal类来实现。看这篇文章如何使用ThreadLocal
  3. 可能与ThreadLocal
  4. 您可以boolean stop在线程中使用 Flag ( ) 来执行此操作,以及将此标志设置为的方法true
于 2013-02-05T06:43:25.090 回答