每次可运行类都创建一个新对象并将其传递给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();
}
}
两个线程会重叠吗?即。 t的a的值是否始终为5,t1的a始终为6?
最佳答案
您为a
线程构造的exmpl
实例中的t
值最初设置为5,而另一个a
实例中的exmpl
值最初设置为6,但不是a
变量,并且您没有向我们展示final
方法。两个run()
字段是否会改变取决于a
方法对它们的作用。