程序:程式是靜止,其真正執行時的程式才稱之為程序
執行緒:輕量級程序(light weight process)
程序與執行緒區別:
執行緒的組成:
建立執行緒(***)
主要的兩種方式:
a--繼承thread類方法
步驟:1.編寫類、繼承thread 2. 重寫run方法 3.建立執行緒物件 4.呼叫start方法啟動執行緒
mythread類
public class mythread extends thread
public mythread(string name)
@override
public void run() }}
testthread類
public class testthread}}
獲取執行緒名稱:
public void run()
}
public static void main(string args)
}
經典問題:多個視窗共賣/各賣多少張票(後續關於此問題單寫一篇)
執行緒基本狀態:新建、就緒、執行、終止
常見方法:
public static void sleep(long millis) 當前執行緒主動休眠
public static void yield() 當前執行緒主動放棄時間片,回到就緒狀態,競爭下一次時間片
public final void join() 允許其他執行緒加入到當前執行緒中
public void setpriority(int) 執行緒優先順序:1-10 預設:5 優先順序越高,cpu的獲取機會越多
public void setdaemon(boolean) 設定守護執行緒
執行緒狀態——等待
執行緒安全
執行緒不安全:
public class threadsafe }};
runnable runnableb=new runnable() }};
//建立兩個執行緒物件
thread a=new thread(runnablea,"a");
thread b=new thread(runnableb,"b");
a.start();
b.start();
a.join(); //加入執行緒
b.join();
system.out.println(arrays.tostring(s));}}
同步**塊synchronized(物件)
system.out.println(thread.currentthread().getname()+"sale"+ticket+"票");
ticket--;}}
}}執行緒狀態——阻塞
同步方法、規則
synchronized 返回值型別 方法名
public class usera extends thread }}
}
public class userb extends thread }}
}
public class testdeadlock catch (interruptedexception e)
a.start();}}
執行緒通訊方法:
publuc final void wiat() 釋放鎖,進入等待佇列
publuc final void wait (long timeout) 超過指定的時間前,釋放鎖,進入等待佇列
publuc final void notify() 隨即喚醒,通知執行緒
publuc final void notifyall() 喚醒所有執行緒
經典問題:生產者、消費者(後續單獨寫)
C 學習 多執行緒程式設計 多執行緒基礎
c 內建了對多執行緒程式設計的支援功能,所以相對於其他語言在多執行緒方面的問題,c 這裡就已經最小化或者不復存在。在.net framework 4.0中,c 中新增了兩個與多執行緒應用程式相關的重要功能 tpl 任務執行並行庫 和plinq 並行linq 兩者都提供對並行程式設計的支援,都可以利用...
學習記錄分享(多執行緒)
1.乙個單cpu的機器,如何同時執行多個執行緒?請簡述其原理 單cpu在任何時間點上,只能執行乙個執行緒,實現同時執行多個執行緒是通過序列,在不同的執行緒之間通過cpu時間片控制切換執行不同的執行緒。2.執行緒的建立 有以下 c 只有主方法乙個執行緒,沒有建立新的執行緒類 3.執行緒的建立 有以下 ...
多執行緒系列(二) 多執行緒基礎
目錄 一 執行緒的幾種狀態 屬性 方法 執行緒的5個狀態 1 建立狀態 new 對應 thread th new thread worker 時 就建立了乙個新的執行緒,僅僅是新建狀態,程式還沒有執行執行緒中的 2 就緒狀態 runnable 對應 th.start 方法,新建執行緒在接收到star...