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


    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);
    }
    

    }

  • 相关阅读:
    0 Explore TreeView
    按钮颜色选择器
    颜色组合框
    Get Files from Directory
    05.0 图片
    WINAPI 变量(2861个)
    为字符串增加50个空格
    让DataGridView显示行号
    相对路径
    SpecialFolder
  • 原文地址:https://www.cnblogs.com/beizhai/p/13796268.html
Copyright © 2020-2023  润新知