首页 > 其他 > 详细

LockSupport和淘宝面试题与源码阅读方法论

时间:2020-10-11 12:32:26      阅读:34      评论:0      收藏:0      [点我收藏+]

package com.lock;

import java.util.concurrent.TimeUnit;
public class LockSupport {
public static void main(String[] args) {
Thread t=new Thread(()->{
for (int i = 0; i <10 ; i++) {

            System.out.println(i);
            //到这很简单的一个线程
            //循环十次  每次秒输出一个数 一直到9
            //接下来给这个线程加上一个LockSupport锁
           if (i==5){
               //使用park()方法阻塞当前线程t 此时运行结果到五就停了
               java.util.concurrent.locks.LockSupport.park();
           }
           //实验 unpark可以两次吗? 答案是可以
            if (i==7){
                //使用park()方法阻塞当前线程t 此时运行结果到7就停了
                java.util.concurrent.locks.LockSupport.park();
            }

            try {
                //加上一个停顿  每一秒停顿
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });
    //执行线程
    t.start();
    //执行unpark  此时这个unpark和start是在主线程同时执行的
    java.util.concurrent.locks.LockSupport.unpark(t);
    java.util.concurrent.locks.LockSupport.unpark(t);


    //这里做了个小拓展  让这个阻塞停止八秒后再唤醒
    try {
        TimeUnit.SECONDS.sleep(8);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("after 8 senconds");
    java.util.concurrent.locks.LockSupport.unpark(t);
}

}

LockSupport和淘宝面试题与源码阅读方法论

原文:https://www.cnblogs.com/beizhai/p/13796268.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!