【发布时间】:2011-11-01 03:15:51
【问题描述】:
我需要在我的 Main 类的 main() 方法中定义一个共享变量。我需要两个线程才能访问该共享变量。我通过实现 Runnable 接口并实现接口的抽象 run() 方法来创建线程。如何从实现 Runnable 接口的类中定义的 run() 方法中引用 Main 类的 main() 方法中定义的共享变量?显然,仅按名称调用它们是行不通的 - 因为它们出现在我的 Runnable 类的范围之外。
编辑 - 抱歉,这是一个简单的例子
public Class DoThread implements Runnable {
public void run(){
sharedVar += 1
}
}
在一个单独的 .class 文件中:
public Class Main {
public static void main(String[] args) {
int sharedVar = 0;
Thread t1 = new Thread(new DoThread());
Thread t2 = new Thread(new DoThread());
t1.start();
t2.start();
t1.join();
t2.join();
}
}
所以我应该创建一个对象来存储共享变量,然后在创建线程时将该对象传递给 DoThread() 构造函数吗?我有时会在 java 通过 ref 或通过 var 时感到困惑,所以如果我这样做,t1 对共享 var 的更改会被 t2 看到吗?
【问题讨论】:
-
总是尝试发布SSCCE。
标签: java multithreading shared-memory