gpt4 book ai didi

java - 使用可运行的同一实例初始化两个线程

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:08 25 4
gpt4 key购买 nike

使用同一个可运行对象实例初始化两个线程是不是不好的编程?使用可运行对象的单独实例进行初始化会有什么区别,并且同一可运行对象实例共享内存位置与性能有什么关系吗?

public static void main(String[] args)throws Exception {
H h = new H();
H h2 = new H();
Thread j = new Thread(h);
j.setName("11");

Thread jj = new Thread(h);//instead of new H()
jj.setName("22");
j.start();
jj.start();
}

class H implements Runnable {
public void run() {
while(true) {
System.out.println(Thread.currentThread().getName());
}
}
}

最佳答案

只要您运行的代码旨在支持这一点,那么这样做绝对没问题。它不仅可以通过使用单个实例而不是多个实例来节省一些内存,而且如果这些线程尝试通过共享数据进行通信,那么它可能是绝对需要的!

诚然,通过共享状态进行通信是线程经常变得棘手的地方,所以这需要小心地完成,但从线程系统本身的角度来看,让两个线程调用单个 Runnable 实例的 run 方法绝对没有问题。

关于java - 使用可运行的同一实例初始化两个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31780167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com