我在網上看到了下面的例子:
Java線程的行爲
public class TwoThreads {
public static class Thread1 extends Thread {
public void run() {
System.out.println("A");
System.out.println("B");
}
}
public static class Thread2 extends Thread {
public void run() {
System.out.println("1");
System.out.println("2");
}
}
public static void main(String[] args) {
new Thread1().start();
new Thread2().start();
}
}
我的問題是:
這是保證 「A」 將是打印在「2」之前將打印「B」和「1」之前,但是有可能「1」會由另一個線程連續打印兩次?在這片c我們至少有3個線程(1個主線程和2個線程)。我們可以想象調度器運行1個線程:new Thread1()。start();然後在System.out.println(「1」)後立即放棄;然後再次在Thread1()中運行另一個威脅。再次打印「1」?
我正在使用NetBeans IDE,它似乎運行這樣的程序總是會導致相同的第一個結果,所以它似乎有一些與緩存。根據我的理解,你通過聲明volatile變量來處理這個問題,它可以在這裏完成,怎麼做?如果不是,那麼緩存的解決方案是什麼?在當今的計算機處理器中,我們大多有2個處理器,而且我們仍然發現網上的許多多線程程序使用2個以上的線程!這個過程在編譯時變得沉重而緩慢嗎?
我從來不理解這些問題。如果你想要一個特定的訂單,爲什麼你使用線程呢? – EJP