具有相同runnable类的不同对象的多个线程可以重叠

时间:2015-11-16 04:51:51

标签: java multithreading

每次在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?

3 个答案:

答案 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 。同一时间。