4 回答
TA贡献1951条经验 获得超3个赞
因为您没有创建线程。取而代之的是,您正在创建Runnable
实例,然后运行它们的run
方法。
而是这样做:
new Thread(threadAlpha).start(); new Thread(threadBeta).start();
TA贡献1942条经验 获得超3个赞
当您调用threadBeta.run()或threadAlpha.run()时,您正在调用一个具有无限循环的方法。您不是在创建线程。这就是为什么即使threadBeta.run()处于无限循环中,threadAlpha.run() 也不会执行。相反,您可以这样做:
new Thread(threadBeta).start(); new Thread(threadAlpha).start();
TA贡献1895条经验 获得超3个赞
Runnable run() 在当前线程中执行,因此行为。如果您想在两个单独的线程中运行,请使用Thread并调用start它们:
public class SpringMultipleThreads {
public static void main(String[] args) {
new SpringMultipleThreads().postConstructor();
}
private void postConstructor() {
Thread threadAlpha = new Thread(() -> {
while (true) {
System.out.println("1");
try {
Thread.sleep(1000 * 3);
} catch (InterruptedException e) {
}
}
});
Thread threadBeta = new Thread(() -> {
while (true) {
System.out.println("2");
try {
Thread.sleep(1000 * 3);
} catch (InterruptedException e) {
}
}
});
threadBeta.start();
threadAlpha.start();
}
}
TA贡献1828条经验 获得超4个赞
当您调用threadAlpha.run()并threadBeta.run()在当前线程中执行它时。为了在新线程中简单执行,您可以使用:
Thread t1 = new Thread(threadAlpha);
t1.start();
Thread t2 = new Thread(threadBeta);
t2.start();
添加回答
举报