国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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線程死鎖的評論 (共 條)

分享到微博請遵守國家法律
临沭县| 永泰县| 宁河县| 乌拉特中旗| 勐海县| 紫阳县| 枣庄市| 留坝县| 隆尧县| 平阳县| 政和县| 金堂县| 乌兰县| 呼玛县| 秭归县| 雷波县| 离岛区| 永吉县| 江西省| 韶关市| 龙里县| 曲水县| 延长县| 宁陕县| 镶黄旗| 铅山县| 台山市| 平果县| 绵阳市| 临武县| 揭阳市| 北海市| 佛冈县| 遂溪县| 铅山县| 安福县| 克什克腾旗| 买车| 墨脱县| 始兴县| 田东县|