多執行緒 基礎多執行緒學習分享

2021-10-07 21:45:03 字數 2419 閱讀 8705

程序:程式是靜止,其真正執行時的程式才稱之為程序

執行緒:輕量級程序(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...