每次在runnable类中创建一个新对象并将其传递给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的值设为5,t1的值是否为6?
答案 0 :(得分:1)
t 和 t1 都是完全不同的对象,除非您对其进行修改,否则将保留每个实例中 a 的值。
答案 1 :(得分:1)
为a
线程构建的exmpl
实例中t
的值最初设置为5,值{{1在另一个a
实例中,最初设置为6,但exmpl
不是a
变量,并且您没有向我们展示final
方法。这两个run()
字段是否会发生变化取决于a
方法对它们的作用。
答案 2 :(得分:-1)
是的,当然!线程的全部意义在于,多个线程(即使它们是类thread
的不同对象将立即运行。
想一想:
如果不能同时运行多个线程,那么你不会只使用单独的方法吗?这样,代码将从1 to 2 to 3
开始按单个顺序运行。
问题是,java有一个名为thread
的东西。此thread
的整点是这样的,而不是从1 to 2 to 3,
开始,编译器可以在处执行 1 2和3 。同一时间。