每次创建可运行类的新对象并将其传递给 Thread 是否会产生多线程问题。
例如:
class exmpl implements Runnable {
int a = 0;
exmpl(int x) {
a = x;
}
}
public class toRun {
public static void main(String[] args) {
Thread t = new Thread(new exmpl(5));
Thread t1 = new Thread(new exmpl(6));
t.start();
t1.start();
}
}
两个线程会重叠吗? IE。 t 的 a 值总是 5,t1 的 a 值总是 6 吗?
最佳答案
您为 t
线程构造的 exmpl
实例中 a
的值最初设置为5,另一个 exmpl
实例中 a
的值最初设置为 6,但 a
不是 final
变量,并且您没有向我们展示 run()
方法。这两个 a
字段是否会更改取决于 run()
方法对它们执行的操作。
关于java - 具有同一可运行类的不同对象的多个线程可以重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33728729/