首页 > 解决方案 > 如果一个类有一个内部类并且内部类运行一个线程,那么内部类线程是否彼此共享外部类的相同字段?

问题描述

基本上,如果我有代码:

public class Outer { 
   public int counter = 0;
   public void makeNewThread() {
      Thread t1 = new Thread(new Inner());
      t1.start();
   }

   private class Inner implements Runnable {
      public void run() { //do stuff involving counter... }
   }

}

每次调用 makeNewThread() 时,每个线程都会有自己的计数器版本,还是它们都共享相同版本的计数器?我会假设它们都将共享相同的版本,因为它是一个内部类,但是每个线程都有自己的堆栈,所以我不确定。

标签: javamultithreadinginner-classesrunnable

解决方案


他们将共享相同的counter.


推荐阅读