因空間字數限制和發圖片的不方便歡迎訪問我的百度文庫!
http://wenku.baidu.com/view/9a02cb02de80d4d8d15a4f57.html
第九章線程9.1 線程的基本概念
1、線程是一個程式內部的順序控制流程(線程是一個程式中不同的執行路徑)。
2、線程和進程的區別
a) 每個進程都有獨立的代碼和資料空間,進程間的切換會有較大的開銷。
b) 線程可以看成輕量級的進程,同一類線程共用代碼和資料空間,每個線程有獨立的運行棧和程式計數器(PC),線程切換的開銷小。
c) 多進程:在作業系統中能同時運行多個任務(程式)。
d) 多線程:在同一應用程式中能有多個順序同時執行。
3、Java的線程是通過jva.lang.Thread類來實現的。
4、VM啟動時會有一個由主方法(public static void main(){})所定義的線程。
5、可以通過建立Thread的執行個體來建立線程。
6、每個線程都是通過某個特定的Thread對象所對應的方法run()來完成其操作的,方法run()稱為線程體。
7、通過調用Thread類的start()方法來啟動一個線程。
8、線程類的寫法
class Runner1 implements Runnable {//建議實用Runnable介面
//class Runner1 extends Thread {//不建議使用繼承!
public void run() {
for(int i = 0; i<100; i++) {
System.out.println("Runner1 :" + i);
}
}
}
9、線程的調用可以用run方法啟動,但這樣就是方法的調用,而不是多線程!
真正的是調用Thread的start()方法!
public class TestThread1 {
public static void main (String []args) {
Runner1 r = new Runner1();
//r.run();//這樣就是方法的調用的,並不是真正的多線程
Thread t = new Thread(r);
t.start();
for(int i = 0; i<100; i++) {
System.out.println("Main Thread :------" + i);
}
}
}
10、線程的建立和啟動
第一種:
1)定義現場類實現Runnable介面
2)Thread myThread = new Thread(target);//target為Runnable介面類型
3)Runnable中只有一個方法:
public void run(); 用以定義線程的運行體
4)使用Runnable介面可以為多個線程提供資料的共用
5)在實現Runnable介面的類的run方法定義中可以使用Thread的靜態方法
public static Thread currentThread() 讀取當前線程的引用
第二種:
1)可以頂一個Thread的之類並重寫其run方法如:
Class MyThread extends Thread {
public void run(){...}
}
2)然後產生該類的對象
MyThread myThread = new MyThread(...)
TestThread1.java
public class TestThread1 {
public static void main (String []args) {
Runner1 r = new Runner1();
//r.run();
Thread t = new Thread(r);
t.start();
for(int i = 0; i<100; i++) {
//Thread.sleep(1);
System.out.println("Main Thread :------" + i);
}
}
}
//class Runner1 implements Runnable {
class Runner1 extends Thread {
public void run() {//重寫的方法不能拋出比被重寫方法不同的異常
for(int i = 0; i<100; i++) {
//Thread.sleep(1);
System.out.println("Runner1 :" + i);
}
}
}
下面內容請到百度文庫查看!