執行緒互斥(二)

2021-07-22 01:09:32 字數 929 閱讀 6607

執行緒互斥的解決方案:用鎖。

核心:保證競爭統一資源的所有執行緒用同一把鎖

demo:講解的不同場景下,鎖的設計。

package 多執行緒;

import 多執行緒.traditionalthreadsynchronized.outputer;

public class traditionalthreadsynchronized2

private void init() catch (interruptedexception e)

outputer.output("zhangsan");

/*new output().output("zhangsan");

* 若是這種形式則,不能保證鎖是同一把

* 會有執行緒安全的問題*/}

}}).start();

// 另乙個執行緒

new thread(new runnable() catch (interruptedexception e)

outputer.output2("lisi");}}

}).start();

} static class outputer

system.out.println();}}

/*第二種互斥是保護整個方法:

* public synchronized void output2()

*/public synchronized void output2(string name)

system.out.println();

}//靜態方法:則鎖用類的位元組碼。outputer.class;

public static synchronized void output3(string name)

system.out.println();

}}}

執行緒 二 同步與互斥,死鎖

臨界資源 多執行緒執行流共享的資源 臨界區 訪問臨界資源的 互斥 任何時刻,有且只有乙個執行流進入臨界區,訪問臨界資源,對臨界資源起保護作用 原子性 不會被任何排程機制打斷的操作 int pthread mutex destroy mutex 靜態分配的互斥量不用銷毀,已經加鎖的互斥量不能銷毀,銷毀...

java多執行緒 二 執行緒的互斥

多執行緒相對於單執行緒而言,大大的提高了硬體cpu的使用率,提高了處理的速度。任何事物帶來的都是兩面性的,多執行緒為我們帶來效能提高的同時也帶來了許多的安全性問題。說互斥之前,先說一下什麼是互斥,舉個列子,一天去atm機取錢,如果沒有互斥的話,你正取著錢突然有個人衝進來把你的錢搶走了。這時候你想,要...

linux c程式設計 執行緒互斥二 執行緒死鎖

死鎖就是不同的程式在執行時因為某種原因發生了阻塞,進而導致程式不能正常執行。阻塞程式的原因通常都是由於程式沒有正確使用臨界資源。我們舉個日常生活中的例子來比喻死鎖。我們把馬路上行駛的汽車比作執行著的程式,把馬路比作臨界資源,如果有兩輛汽車相互碰撞,就會把車停在馬路上,這樣的話他們一直占用著馬路這個臨...