一:什麼是線程
- 線程:就是進程中一個負責程序執行的控制單元(執行路徑)
- 進程:正在進行中的程序(直譯)
- 一個進程至少要有一個線程
- 開啓多個線程就是爲了同時運行多部分代碼
- 每一個線程都有自己運行的內容,這個內容可以稱爲線程要執行的任務
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();
}
}
二:什麼是多線程
- 一個進程中可以多執行路徑,稱之爲多線程
- 多線程的好處:解決了多部分同時運行的問題
- 多線程的弊端:線程太多回到效率的降低
三: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方法中即可