執行緒互斥的解決方案:用鎖。
核心:保證競爭統一資源的所有執行緒用同一把鎖
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程式設計 執行緒互斥二 執行緒死鎖
死鎖就是不同的程式在執行時因為某種原因發生了阻塞,進而導致程式不能正常執行。阻塞程式的原因通常都是由於程式沒有正確使用臨界資源。我們舉個日常生活中的例子來比喻死鎖。我們把馬路上行駛的汽車比作執行著的程式,把馬路比作臨界資源,如果有兩輛汽車相互碰撞,就會把車停在馬路上,這樣的話他們一直占用著馬路這個臨...