20200403java學習之路之線程

一:什麼是線程

  1. 線程:就是進程中一個負責程序執行的控制單元(執行路徑)
  2. 進程:正在進行中的程序(直譯)
  3. 一個進程至少要有一個線程
  4. 開啓多個線程就是爲了同時運行多部分代碼
  5. 每一個線程都有自己運行的內容,這個內容可以稱爲線程要執行的任務
class Demo{
	private String name;
	Demo(String name){
		this.name=name;
	}
	public void show(){
		for(int x=0;x<10;x++){
			System.out.println(name+"......x="+x);
		}
	}
}

class ThreadDemo2{
	public static void main(String[] args){
			Demo d1=new Demo("nancy");
			Demo d2=new Demo("liliy");
			d1.show();
			d2.show();
	}
}

在這裏插入圖片描述

二:什麼是多線程

  1. 一個進程中可以多執行路徑,稱之爲多線程
  2. 多線程的好處:解決了多部分同時運行的問題
  3. 多線程的弊端:線程太多回到效率的降低

三:JVM多線程

1,執行main函數的線程:
該線程的任務代碼定義在main函數中

2,負責垃圾回收的線

class Demo extends Object{
	public void finalize(){
		System.out.println("demo ok"); 
	}
}


class ThreadDemo{
	public static void main(String[] args){
		new Demo();
		new Demo();
		System.gc();
		new Demo();
		System.out.println("hi hi jhi");
	}
}

在這裏插入圖片描述

四:如何創建一個線程

創建線程方式一:繼承thread類

步驟:
1,定義一個類繼承thread類
2,覆蓋thread類中的run方法
3,直接創建thread的子類對象創建線程
4,調用start方法開啓線程並調用線程的任務run方法執行
注意:可以通過thread的**getName()**獲取線程的名稱 thread -編號(從0開始)

主線程的名字就是main, thread.currentThresd().getName();
調用run方法和start方法的區別

 class Demo extends Thread{
 	private String name;
 	Demo(String name){
 		this.name=name;
 	}
 	public void run(){
 		show();
 	}
 	public void show(){
 		for(int x=1;x<10;x++){
 			System.out.println(name+"....x+"+x+".....name="+getName());
 		}
 	}
 }

class ThreadDemo3{
	public static void main(String[] args){
			Demo d1=new Demo("nancy  nancy" );
			Demo d2=new Demo("NN  NNN");
			d1.run();
			d2.run();
			System.out.println("over..."+Thread.currentThread().getName());
			d1.start();
			d2.start();
	}
}

在這裏插入圖片描述

五:創建線程的目的

1,創建線程的目的是爲了開啓一條執行路徑,去運行指定的代碼和其他代碼實現同時運行
而運行的指定代碼就是這個執行路徑的任務
2,JVM創建的主線程的任務都定義在主函數中

3,而自定義的線程它的任務在哪呢?
thread類中用於描述線程,線程需要任務,所以thread類也有對任務的描述
而這個任務就通過thread類中的run方法來體現
也就是說,run方法封裝自定義線程運行任務的函數

run方法中定義就是線程要運行的代碼

開啓線程是爲了運行指定代碼,所以只有繼承thread類,並複寫run方法、
將運行的代碼定義在run方法中即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章