線程定義
線程是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以併發多個線程,每條線程並行執行不同的任務。在Unix System V及SunOS中也被稱爲輕量進程(lightweight processes),但輕量進程更多指內核線程(kernel thread),而把用戶線程(user thread)稱爲線程。
程序 進程 線程
程序 可以理解爲一組靜態的代碼
進程 正在進行的程序 靜態代碼運行起來
線程 正在進行的進程的小單元
java中線程分類
1:主線程 系統線程
2:用戶線程 Main
3:gc 垃圾回收器
線程的幾種狀態
java創建線程和執行
第一種
1:自己寫一個類
2:繼承父類Thread
3:重寫run()方法
4:new一個線程對象 調用start方法 讓線程進入就緒狀態
代碼:
多人跑步比賽
package my;
public class runman extends Thread {//繼承Thread 類變成線程
//重寫run方法
private String name;
public runman(String name)
{
this.name=name;
}
@Override
public void run() {
for (int i = 0; i <10 ; i++) {
System.out.println(this.name + "跑到第" + i + "米");
}
}
public static void main(String[] args) {
//創建線程對象
runman ra=new runman("a");
runman rb=new runman("b");
runman rc=new runman("c");
//調用start方法線程進入就緒狀態 cpu分配
ra.start();//從Thread繼承來的方法
rb.start();
rc.start();
}
}
package my;
public class runman extends Thread {//繼承Thread 類變成線程
//重寫run方法
private String name;
public runman(String name)
{
this.name=name;
}
int i;
@Override
public void run() {
for (i = 0; i <10 ; i++) {
System.out.println(this.name + "跑到第" + i + "米");
}
}
public static void main(String[] args) {
//創建線程對象
runman ra=new runman("a");
runman rb=new runman("b");
runman rc=new runman("c");
//調用start方法線程進入就緒狀態 cpu分配
ra.start();//從Thread繼承來的方法
rb.start();
rc.start();
}
}
第二種:
1:自己寫一個類
2:實現接口 Runable
3:重寫run()方法
4:new一個線程對象 調用start方法 讓線程進入就緒狀態
代碼:
package my;
public class runman implements Runnable {//繼承Thread 類變成線程
//重寫run方法
private String name;
public runman(String name)
{
this.name=name;
}
int i;
@Override
public void run() {
for (i = 0; i <10 ; i++) {
System.out.println(this.name + "跑到第" + i + "米");
}
}
public static void main(String[] args) {
//創建線程對象
runman ra=new runman("a");
runman rb=new runman("b");
runman rc=new runman("c");
//實現Runable的類不能直接start 將對象放入線程
Thread threada =new Thread(ra);
Thread threadb =new Thread(ra);
Thread threadc =new Thread(ra);
threada.start();
threadb.start();
threadc.start();
}
}
運行結果: