package com.jackson.deng.concurrent;
/**
* 創建線程有兩種方式<br>
* 1.extends Thread<br>
* 2.implement Runnable<br>
* @author jackson
*
*/
public class CreateThread {
public class Calculator implements Runnable {
private int number;
public Calculator(int number) {
this.number = number;
}
/**
* run()執行線程中調用的函數
*/
@Override
public void run() {
for (int i = 1; i <= 10; i++) {
System.out.printf("%s: %d * %d = %d\n", //
Thread.currentThread().getName(), number, i, i * number);
}
}
}
public static void main(String[] args) {
CreateThread ct = new CreateThread();
for (int i = 1; i <= 10; i++) {
//匿名內部類調用
Calculator calculator = ct.new Calculator(i);
//創建線程實例--但還沒有開啓線程
Thread thread = new Thread(calculator);
//開啓線程-->每個線程執行各自的run()
thread.start();
}
}
}
它是怎麼工作的~?
可以看下面的運行過程
當調用Thread對象的start()方法時,程序創建了另一個線程.在這些start()方法調用後,我們的程序就開啓了多個執行線程,分別執行執行這些start()方法.
當全部的線程執行結束時(更具體點,所有非守護線程結束時),Java程序就結束了.如果初始線程(執行main()方法的主線程)運行結束,
其他的線程還是會繼續執行直到完成.但是如果某個線程調用System.exit()指示終結程序,那麼全部的線程都會結束執行.