4 回答

TA貢獻(xiàn)1951條經(jīng)驗 獲得超3個贊
因為您沒有創(chuàng)建線程。取而代之的是,您正在創(chuàng)建Runnable
實例,然后運行它們的run
方法。
而是這樣做:
new Thread(threadAlpha).start(); new Thread(threadBeta).start();

TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊
當(dāng)您調(diào)用threadBeta.run()或threadAlpha.run()時,您正在調(diào)用一個具有無限循環(huán)的方法。您不是在創(chuàng)建線程。這就是為什么即使threadBeta.run()處于無限循環(huán)中,threadAlpha.run() 也不會執(zhí)行。相反,您可以這樣做:
new Thread(threadBeta).start(); new Thread(threadAlpha).start();

TA貢獻(xiàn)1895條經(jīng)驗 獲得超3個贊
Runnable run() 在當(dāng)前線程中執(zhí)行,因此行為。如果您想在兩個單獨的線程中運行,請使用Thread并調(diào)用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貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
當(dāng)您調(diào)用threadAlpha.run()并threadBeta.run()在當(dāng)前線程中執(zhí)行它時。為了在新線程中簡單執(zhí)行,您可以使用:
Thread t1 = new Thread(threadAlpha);
t1.start();
Thread t2 = new Thread(threadBeta);
t2.start();
添加回答
舉報