多執行緒是很有用的,接下來要學會如何建立多執行緒。
在乙個程序中建立多個執行緒。
thread:執行緒。
(1)定義乙個執行緒類繼承thread類,然後重寫run()方法,再建立執行緒物件,呼叫
start()方法啟動執行緒
(2)定義乙個執行緒任務類實現runnable介面,然後重寫run()方法
建立執行緒任務物件,把執行緒任務物件包裝成執行緒物件,呼叫
start()方法啟動執行緒
(3)定義乙個執行緒任務類實現callable介面(拓展)
a.定義乙個執行緒類繼承thread類。
b.重寫thread類的run()方法
c.建立執行緒類的物件。
d.呼叫執行緒類物件的start()方法啟動執行緒
優點:
編碼相對簡單。
缺點:
執行緒類已經繼承了thread類,不能再繼承其他類,
執行緒類的功能受到了約束不能繼承其其它類的功能。
不能直接得到執行緒執行的結果。
注意事項:
1,啟動執行緒必須呼叫start()方法
如果直接呼叫run()方法,會被直接當成主線程的方法呼叫執行,不會出現子執行緒!!
2.一般需要把子執行緒先建立啟動,再寫主線程的任務。
// 程序:threaddemo.class
public
class
threaddemo
}}
// a.定義乙個執行緒類繼承thread類。
// mythread只是執行緒類不是執行緒物件,是用來建立執行緒物件的。
class
mythread
extends
thread
}}
a.定義乙個執行緒任務類實現runnable介面。重寫run()方法
b.建立乙個執行緒任務物件
c.把執行緒任務物件包裝成乙個執行緒物件
– public thread(runnable target)
d.呼叫執行緒物件的start()方法啟動執行緒。
優缺點:
優點:執行緒任務物件只是實現了runnable介面,可以繼續繼承其他類,也可以繼續
實現其他介面,本身功能可以增強。
適合做多執行緒資源共享操作。
適合做執行緒池。
缺點:
編碼相對複雜。
不能直接得到執行緒執行的結果。
public
class
threaddemo
}}
// a.定義執行緒任務類實現runable介面
class
myrunnable
implements
runnable
}}
方式二的匿名內部類寫法:
public
class
threaddemo02}}
;// c.把執行緒任務物件包裝成乙個執行緒物件:public thread(runnable target)
thread t =
newthread
(target)
;// d.呼叫執行緒物件的start()方法啟動執行緒
t.start()
;// c.把執行緒任務物件包裝成乙個執行緒物件:public thread(runnable target)
newthread
(new
runnable()
}}).
start()
;for
(int i =
0; i <
10; i ++)}
}
定義乙個執行緒任務類實現callable介面(拓展)
方式三的優缺點:
缺點:編碼複雜。
優點:執行緒任務物件只是實現了callable介面,可以繼續繼承其他類,也可以繼續
實現其他介面,本身功能可以增強。
適合做多執行緒資源共享操作。
適合做執行緒池。
可以直接得到執行緒執行的結果。
public
class
threaddemo
trycatch
(exception e)
}}
// a.定義乙個執行緒任務類實現callable介面。
class
mycallable
implements
callable
return thread.
currentthread()
.getname()
+"求和的結果是:"
+sum;
}}
多執行緒的建立
每乙個程序都必須有乙個主線程,在主線程中我們可以建立多個執行緒。建立執行緒的方法有以下幾種 一 繼承thread類 這種方法需要重寫run方法,非常簡單,但同時會使 結構混亂而且降低可讀性。package p1 public class mythread extends thread 通過宣告建立的...
多執行緒的建立
includejoin 主要是指當建立子執行緒後,子執行緒執行,主線程要在某個地方等待子執行緒執行完畢。detach 建立子執行緒後,子執行緒與主線程分離稱為守護執行緒,它的資源之內的東西,由系統管理。使用detach 時,要避免使用主線程中的引用,指標之內的東西。否則當主線程釋放相應資源時,子執行...
執行緒的建立與多執行緒
多執行緒執行緒建立的方式 一 使用此方式建立的執行緒為守護執行緒 import thread import threading deffn1 a,b print a,b print threading.current thread name defcreate thread1 引數一 在子執行緒中要...