1.多線程定義
/*
多線程:java支持該技術
進程的定義:(正在進行中的程序)不直接執行,只是在分配該應用程序的運行空間
線程:執行路徑,負責執行,負責進程中內容執行的一個控制單元,進程中肯定有線程。
一個進程中可以有多個執行路徑,即稱爲多線程。
一個進程中至少有一個線程。
開啓多個線程是爲了同時運行多部分代碼。
每一個線程都有自己運行的內容,這個內容稱爲線程要執行的任務。
真實來講並不是同時執行。
cpu:
快速切換線程,看似同時運行。線程多,被CPU處理的頻率就減少,切換時隨機的。
JVM 啓動時就啓動了多個線程,至少有兩個線程可以分析的出來。
1.執行main函數的線程
該線程的任務代碼都在主函數中
2.負責垃圾回收的線程
都在垃圾回收器裏定義。(底層內部完成的),每個對象都有能夠回收的方法。(finalize() 方法)
*/
2.多線程實現
/*
多線程:java支持該技術
如何實現多線程:
*/
//正常執行
class Demo
{
private String name;
Demo(String name)
{
this.name = name;
}
public void show()
{
for(int i = 0;i<5;i++)
{
for(int j = -999;j<9999;j++){}
System.out.println(name+i);
}
}
}
class Th
{
public static void main(String[] args)
{
Demo d1 = new Demo("wangcai");
Demo d2 = new Demo("duoduo");
d1.show();
d2.show();
}
} //結果是先wangcai,在duoduo
//多線程執行
/*創建線程方式一:繼承Thread 類
步驟:
1.定義一個類,繼承Thread類
2.覆蓋Thread類中的run方法
3.直接創建Thread的子類對象創建線程
4.調用start()方法開啓線程。
*/
class Demo extends Thread
{
private String name;
Demo(String name)
{
this.name = name;
}
public void run()
{
for(int i = 0;i<5;i++)
{
for(int j = -999;j<9999;j++){}
System.out.println(name+i+ getName());//得到線程的名字,主線程的名字就是main
}
}
}
class Th
{
public static void main(String[] args)
{
/*
創建線程的目的是爲了開啓一條執行路徑,取運行指定的代碼和其他代碼實現同時運行。
而運行的指定代碼就是這個執行路徑的任務。
jvm創建的主線程的任務都定義在了主函數當中,
而自定義的線程都定義在:
Thread類用於描述線程,線程是需要任務的。所以Thread類也對任務描述,這個任務就通過Thread類中的run()方法來體現。
也就是說,run方法就是封裝自定義線程運行任務的函數。
run方法中定義的就是線程要運行的任務代碼。
我們開啓線程是爲了運行指定代碼,所以只有繼承Thread類,並複寫run方法。
將運行的代碼定義在run方法中即可。
*/
// Thread t1 = new Thread();
Demo d1 = new Demo("wangcai");
Demo d2 = new Demo("duoduo");
d1.start();//開啓線程,調用方法
d2.start();
}