每次可运行类都创建一个新对象并将其传递给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方法对它们的作用。

10-05 21:15