1.多線程學習--線程的創建

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();
		}

	}

}

它是怎麼工作的~?

可以看下面的運行過程



每個Java程序最少有一個執行形成,當你運行程序的時候,JVM運行負責調用main()方法的執行線程.

當調用Thread對象的start()方法時,程序創建了另一個線程.在這些start()方法調用後,我們的程序就開啓了多個執行線程,分別執行執行這些start()方法.


當全部的線程執行結束時(更具體點,所有非守護線程結束時),Java程序就結束了.如果初始線程(執行main()方法的主線程)運行結束,


其他的線程還是會繼續執行直到完成.但是如果某個線程調用System.exit()指示終結程序,那麼全部的線程都會結束執行.



發佈了23 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章