# -*- coding: cp936 -*-
#多執行緒程式設計
import thread
def fun(n):
for i in range(n):
print i
thread.start_new_thread(fun,(9,));
thread.start_new_thread(fun,(9,));
thread.start_new_thread(fun,(9,));
import threading
class mythread(threading.thread):
def __init__(self,num):
threading.thread.__init__(self)
self.num = num
def run(self):
print 'i am ',self.num
def run(x,y):
for i in range(x,y):
print i
'''>>> t1 = threading.thread(target=run,args=(15,20))
>>> ti.start()
'''
join方法:
如果乙個執行緒或者函式的執行過程中呼叫另乙個執行緒,並且待其完成操作之後才能執行,那麼可以呼叫join方法
import threading
import time
class mythread(threading.thread):
def __init__(self,id):
threading.thread.__init__(self)
self.id = id
def run(self):
x=0time.sleep(60)
print self.id
def func():
t.start()
for i in range(5):
print i
>>> t=mythread(2)
>>> func()01
234
輸出結果中沒有執行緒的輸出,func函式沒有等待執行緒完成。
將程式更改為
import threading
import time
class mythread(threading.thread):
def __init__(self,id):
threading.thread.__init__(self)
self.id = id
def run(self):
x=0time.sleep(60)
print self.id
def func():
t.start()
t.join()
for i in range(5):
print i
>>> t=mythread(3)
>>> func()30
1234
呼叫join方法,等待執行緒完成
檢視執行緒是否執行
import threading
import time
class mythread(threading.thread):
def __init__(self,id):
threading.thread.__init__(self)
self.id = id
def run(self):
x=0time.sleep(10)
print self.id
def func():
t.start()
print t.isalive()
>>> t=mythread(3)
>>> func()
true
>>> 3
當需要主線程退出時,不管子執行緒是否完成都隨主線程退出,則可以使用thread物件的setdaemon方法來設定。
import threading
import time
class mythread(threading.thread):
def __init__(self,threadname):
threading.thread.__init__(self,name = threadname)
def run(self):
time.sleep(5)
print self.getname()
def func1():
t1.start()
print 'func1 done'
def func2():
t2.start()
print 'func2 done'
t1 = mythread('t1')
t2 = mythread('t2')
t2.setdaemon(true)
func1()
func2()
二 執行緒狀態
新建狀態 new 用new關鍵字建立乙個執行緒物件後,該執行緒物件就處於新生狀態。處於新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態。就緒狀態 runnable 處於就緒狀態的執行緒已經具備了執行條件,但是還沒有被分配到cpu,處於 執行緒就緒佇列 等待系統為其分配cpu。就...
JAVA學習筆記 多執行緒(二)執行緒常用方法
thread類包含的方法 start 啟動執行緒 isalive 判斷執行緒當前是否正在執行 setpriority 設定優先順序 jion 使乙個執行緒等待另乙個執行緒結束 sleep mills long 指定執行緒休眠指定毫秒 yield 使執行緒暫停並允許執行其他程序 wait 和notif...
java多執行緒學習(二)執行緒的基本方法
sleep long millis 作用是讓當前執行緒休眠指定的毫秒,使當前執行緒進入阻塞狀態,期間會讓出cpu的資源,但不會釋放已獲得的鎖.到達指定時間後,執行緒會從阻塞狀態變成 可執行狀態,重新競爭cpu的資源 static void sleep long millis 這是thread類中的靜...