java - 具有同一可运行类的不同对象的多个线程可以重叠

标签 java multithreading

每次创建可运行类的新对象并将其传递给 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/

相关文章:

c++ - 定时器、线程和编译器的错误行为

java - codahale 指标 Meter mark() 方法如何线程安全?

java - 日版字体错误

java - 下载/显示存储在 SQL 表中的文件

java - Spring 和 Javax RS REST API 中继承时序列化 JSON 的差异

java - Java中将可变参数扩展为相应的数量和类型

java - ThreadPoolTask​​Executor 关闭/重新运行问题

c++11异步段错误

java - 使用 NetBeans GUI 构建器操作监听器调用非静态方法

multithreading - 配置和多线程