zoukankan      html  css  js  c++  java
  • Java中关于LockSupport的简单入门记录

    LockSupport的JDK的文档描述:Basic thread blocking primitives for creating locks and other synchronization classes.(对于创建lock和其他同步类的基础线程原语)。在JUC中有大量使用!

    1 示例:

    在主线程中调用LockSupport.park(currentThread);将组线程阻塞,然后通过子线程完成5秒睡眠换后唤醒主线程。

    import java.util.concurrent.locks.LockSupport;
    
    public class LockSupportDemo {
    
        public static void main(String[] args) {
    
            //获取当前线程
            final Thread currentThread = Thread.currentThread();
            
            Runnable runnable = new Runnable() {
    
                @Override
                public void run() {
                    try {
                        //睡眠5秒,等待主线程调用park
                        Thread.sleep(5000);
                        System.out.println("子线程进行unpark操作!");
                        // 进行唤醒给定的currentThread线程
                        LockSupport.unpark(currentThread);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                }
            };
    
            new Thread(runnable).start();
            System.out.println("开始阻塞!");
            // 进行阻塞给定的currentThread线程
            LockSupport.park(currentThread);
            System.out.println("结束阻塞!");
    
        }
    
    }

    示例2:

    import java.util.concurrent.locks.LockSupport;
    
    public class LockSupportDemo {
    
        public static void main(String[] args) {
    
            //获取当前线程
            final Thread currentThread = Thread.currentThread();
         
            //在park之前先进行一次unpark
            LockSupport.unpark(currentThread);
             
            
            System.out.println("开始阻塞!");
            // 由于在park之前进行了一次unpark,所以会低调本次的park操作。因而不会阻塞在此处
            LockSupport.park(currentThread);
            System.out.println("结束阻塞!");
    
        }
    
    }

  • 相关阅读:
    jstl格式化日期
    linux sqlplus查询数据中文乱码解决方法记录
    MyBatis insert操作插入,返回主键from官方
    Debian apt-get 用法
    Java并发编程--Semaphore
    Java并发编程--CyclicBarrier
    Java并发编程--CountDownLatch
    Java并发编程--BlockingQueue
    Java并发编程--ReentrantReadWriteLock
    Java并发编程--Lock
  • 原文地址:https://www.cnblogs.com/leodaxin/p/7701649.html
Copyright © 2011-2022 走看看