有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

共 (1) 个答案

  1. # 1 楼答案

    回答

    1. 有两种方法可以做到这一点。你也可以; 名为ThreadUtil的Util类及其内部有一个static Set<Thread>。您可以添加创建的线程,以便在线程完成执行时进行设置和删除。 或者,您可以从ThreadPoolExecutor扩展并重写方法beforeExecuteafterExecute方法来执行上述相同的操作。您可以使用集合来获取正在运行的线程。如果要按名称存储和检索,可以使用映射
    2. 这可以通过使用ThreadLocal类实现。请参阅this关于如何使用ThreadLocal的帖子
    3. 可能与ThreadLocal
    4. 您可以使用线程中的标志(boolean stop)来执行此操作,以及将此标志设置为true的方法