亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原(yuan)創

Java線程使用之Locksupport

2023-10-27 06:59:06
1
0

Locksupport類可以實現線程的使用(yong)和喚醒

    park(): 阻塞當前線程
    unpark(thread): 喚醒(xing)指定線(xian)程(cheng)

使用舉例:a,b,c三個線(xian)(xian)程同(tong)時(shi)啟動(dong),a線(xian)(xian)程打印a,b線(xian)(xian)程打印b,c線(xian)(xian)程打印c,如何用Java代碼實現(xian)按順序打印abc,循環(huan)十次。

public static void main(String[] args) {
        Thread a,b,c;
        a = new Thread(() -> {
            LockSupport.park();
            for(int i=0;i<10;i++){
                System.out.print(Thread.currentThread().getName());
                LockSupport.park();
            }
        },"a");
        b = new Thread(() -> {
            LockSupport.park();
            for(int i=0;i<10;i++){
                System.out.print(Thread.currentThread().getName());
                LockSupport.park();
            }
        },"b");
        c = new Thread(() -> {
            LockSupport.park();
            for(int i=0;i<10;i++){
                System.out.print(Thread.currentThread().getName());
                LockSupport.park();
            }
        },"c");
        a.start();
        b.start();
        c.start();
        int count = 1;
        for(;;){
            if(!a.isAlive() && !b.isAlive() && !c.isAlive()){
                break;
            }
            if(count%3 == 1){
                LockSupport.unpark(a);
            }
            if(count%3 == 2){
                LockSupport.unpark(b);
            }
            if(count%3 == 0){
                LockSupport.unpark(c);
            }
            try {
                // 主線程休眠10毫秒是為了把cpu的使用權讓給 a/b/c 線程
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            count++;
        }
    }

0條評論
作者已關閉評論
汪****翔
3文(wen)章數
0粉絲數
汪****翔
3 文章 | 0 粉絲
汪****翔
3文章(zhang)數
0粉絲數
汪****翔
3 文(wen)章 | 0 粉絲
原創

Java線程使用之Locksupport

2023-10-27 06:59:06
1
0

Locksupport類可以實現線程(cheng)的(de)使用(yong)和喚醒

    park(): 阻塞當前線程
    unpark(thread): 喚醒指(zhi)定線程

使用(yong)舉例:a,b,c三個(ge)線(xian)(xian)程(cheng)(cheng)同(tong)時啟動,a線(xian)(xian)程(cheng)(cheng)打印(yin)a,b線(xian)(xian)程(cheng)(cheng)打印(yin)b,c線(xian)(xian)程(cheng)(cheng)打印(yin)c,如何用(yong)Java代碼實現按順(shun)序(xu)打印(yin)abc,循環十次。

public static void main(String[] args) {
        Thread a,b,c;
        a = new Thread(() -> {
            LockSupport.park();
            for(int i=0;i<10;i++){
                System.out.print(Thread.currentThread().getName());
                LockSupport.park();
            }
        },"a");
        b = new Thread(() -> {
            LockSupport.park();
            for(int i=0;i<10;i++){
                System.out.print(Thread.currentThread().getName());
                LockSupport.park();
            }
        },"b");
        c = new Thread(() -> {
            LockSupport.park();
            for(int i=0;i<10;i++){
                System.out.print(Thread.currentThread().getName());
                LockSupport.park();
            }
        },"c");
        a.start();
        b.start();
        c.start();
        int count = 1;
        for(;;){
            if(!a.isAlive() && !b.isAlive() && !c.isAlive()){
                break;
            }
            if(count%3 == 1){
                LockSupport.unpark(a);
            }
            if(count%3 == 2){
                LockSupport.unpark(b);
            }
            if(count%3 == 0){
                LockSupport.unpark(c);
            }
            try {
                // 主線程休眠10毫秒是為了把cpu的使用權讓給 a/b/c 線程
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            count++;
        }
    }

文章來自個人專欄
文(wen)章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0