最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

java線程死鎖

2022-09-02 09:20 作者:虛云幻仙  | 我要投稿

/**
* 死鎖
* 多個線程各自占有一些共享資源,并且互相等待其他線程占有的資源釋放才能繼續(xù)而都進(jìn)入阻塞狀態(tài),停止執(zhí)行
* 同時擁有兩個以上對象的鎖時可能發(fā)生死鎖
*/

public class TestThread2 implements Runnable{

? ?public static class LockA{}
? ?public static class LockB{}
? ?//創(chuàng)建兩個類用于對象鎖
? ?LockA lockA;
? ?LockB lockB;
? ?boolean aFirst;

? ?public TestThread2(LockA lockA, LockB lockB, boolean aFirst) {
? ? ? ?this.lockA = lockA;
? ? ? ?this.lockB = lockB;
? ? ? ?this.aFirst = aFirst;
? ?}

? ?@Override
? ?public void run() {
? ? ? ?if (aFirst){
? ? ? ? ? ?ab();
? ? ? ?}else {
? ? ? ? ? ?ba();
? ? ? ?}
? ?}

? ?public void ab(){
? ? ? ?synchronized(lockA){
? ? ? ? ? ?System.out.println(Thread.currentThread().getName()+"正在使用lockA");
? ? ? ? ? ?try {
? ? ? ? ? ? ? ?Thread.sleep(1);
? ? ? ? ? ?} catch (InterruptedException e) {
? ? ? ? ? ? ? ?throw new RuntimeException(e);
? ? ? ? ? ?}
? ? ? ? ? ?System.out.println(Thread.currentThread().getName()+"排隊等待使用lockB");
? ? ? ? ? ?synchronized (lockB){
? ? ? ? ? ? ? ?//在同步代碼內(nèi)進(jìn)行其他鎖對象的同步
? ? ? ? ? ? ? ?System.out.println(Thread.currentThread().getName()+"正在使用lockB");
? ? ? ? ? ?}
? ? ? ?}
? ?}
? ?public void ba(){
? ? ? ?synchronized(lockB){
? ? ? ? ? ?System.out.println(Thread.currentThread().getName()+"正在使用lockB");
? ? ? ? ? ?try {
? ? ? ? ? ? ? ?Thread.sleep(1);
? ? ? ? ? ?} catch (InterruptedException e) {
? ? ? ? ? ? ? ?throw new RuntimeException(e);
? ? ? ? ? ?}
? ? ? ? ? ?System.out.println(Thread.currentThread().getName()+"排隊等待使用lockA");
? ? ? ? ? ?synchronized (lockA){
? ? ? ? ? ? ? ?//在同步代碼內(nèi)進(jìn)行其他鎖對象的同步
? ? ? ? ? ? ? ?System.out.println(Thread.currentThread().getName()+"正在使用lockA");
? ? ? ? ? ?}
? ? ? ?}
? ?}

? ?public static void main(String[] args) {
? ? ? ?LockA lockA = new LockA();
? ? ? ?LockB lockB = new LockB();
? ? ? ?Thread t1 = new Thread(new TestThread2(lockA,lockB,true));
? ? ? ?Thread t2 = new Thread(new TestThread2(lockA,lockB,false));
? ? ? ?t1.start();
? ? ? ?t2.start();
? ? ? ?/*結(jié)果為
? ? ? ?Thread-1正在使用lockB
? ? ? ?Thread-0正在使用lockA
? ? ? ?Thread-1排隊等待使用lockA
? ? ? ?Thread-0排隊等待使用lockB

? ? ? ?T-1等待T-0釋放lockA而阻塞,T-0等待T-1釋放lockB而阻塞形成死鎖

? ? ? ?java中沒有專用的解決辦法,因此編程時禁止使用synchronized相互嵌套
? ? ? ? */

? ?}
}

java線程死鎖的評論 (共 條)

分享到微博請遵守國家法律
永兴县| 西畴县| 冀州市| 安宁市| 衡阳市| 昆山市| 合川市| 洪洞县| 灵川县| 民丰县| 奉化市| 长岭县| 凤冈县| 道真| 安图县| 开鲁县| 随州市| 周至县| 滦平县| 醴陵市| 鲜城| 五常市| 托里县| 清河县| 二连浩特市| 清原| 乌拉特后旗| 凌云县| 平定县| 肃宁县| 河东区| 时尚| 富裕县| 福泉市| 泽普县| 延安市| 武强县| 沽源县| 临夏市| 仁化县| 蒙城县|