這裏是在Java的示例程序從tutorials point:mulithreading在Java示例
// Create a new thread.
class NewThread implements Runnable {
Thread t;
NewThread() {
// Create a new, second thread
t = new Thread(this, "Demo Thread");
System.out.println("Child thread: " + t);
t.start(); // Start the thread
}
// This is the entry point for the second thread.
public void run() {
try {
for(int i = 5; i > 0; i--) {
System.out.println("Child Thread: " + i);
// Let the thread sleep for a while.
Thread.sleep(50);
}
} catch (InterruptedException e) {
System.out.println("Child interrupted.");
}
System.out.println("Exiting child thread.");
}
}
public class ThreadDemo {
public static void main(String args[]) {
new NewThread(); // create a new thread
try {
for(int i = 5; i > 0; i--) {
System.out.println("Main Thread: " + i);
Thread.sleep(100);
}
} catch (InterruptedException e) {
System.out.println("Main thread interrupted.");
}
System.out.println("Main thread exiting.");
}
}
的程序的輸出是如下。
Child thread: Thread[Demo Thread,5,main]
Main Thread: 5
Child Thread: 5
Child Thread: 4
Main Thread: 4
Child Thread: 3
Child Thread: 2
Main Thread: 3
Child Thread: 1
Exiting child thread.
Main Thread: 2
Main Thread: 1
Main thread exiting.
我很難理解爲什麼主線程在子線程之前執行。在程序中你可以看到第一個新的NewThread()被執行。 NewThread類實例化一個新線程,並在新線程上調用start()函數,然後調用run()函數。 只有在創建新線程後,主函數中的循環纔會出現。但是,當程序運行時,主線程中的循環在子線程之前運行。請幫助我理解。
我看到你沒有應用任何線程同步選項。所以在啓動兩個不同的線程後,'它不在你的手上'來控制哪個線程執行時,但有一些同步選項,如延遲,優先級和join()也許你可以達到一定數量的控制..不斷學習.. – Dreamer