[英]Unable to understand the working of Threads- Runnable Interface
public class Test {
private static void funct(final int i) {
new Thread(new Runnable() {
public void run() {System.out.println(i);}
}).start();
}
public static void main(String[] args) {
System.out.println(1);
funct (2);
System.out.println(3);
funct (4);
System.out.println(5);
}
}
每次運行它,我都會得到以下解決方案之一。 為什么這樣? 1 3 5 4 2
1 3 5 2 4
1 3 2 5 4
在此示例中,數字的打印順序不確定。 您唯一可以確定的是,1、3和5將按該順序出現。 但是,這種排列2和4的位置尚不明確。 原因是您有3個線程打印出以下數字系列:(1、3、5); (2)和(4)。 這三個線程將由JVM調度,但是它確定最好。
多線程編程是一個復雜的主題,由於您似乎剛剛開始涉足,因此我建議使用Oracle Java教程的Concurrency部分: http : //download.oracle.com/javase/tutorial/essential/concurrency/index .html
因為您的主線程有時會擊敗其他兩個線程。 其他時候沒有。
您有三個線程; 無法保證將按計划以任何特定順序運行。
線程和異步性通常是復雜的主題,但是簡短的是,在您的情況下,線程需要一點時間來加速,因此它們根據JVM的處理器時間類型與其他打印語句交錯(並且,然后,操作系統決定分配給那些線程。
我強烈建議Brian Goetz等人撰寫的《 Java Concurrency in Practice 》一書,如果您想真正掌握正在發生的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.