博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JUC——线程同步锁(LockSupport阻塞原语)
阅读量:7104 次
发布时间:2019-06-28

本文共 1263 字,大约阅读时间需要 4 分钟。

  java.util.concurrent.locks.LockSupport这个是一个独立的类,这个类的主要功能是用来解决Thread里面提供的suspend()(挂起线程)、resume()(恢复运行)方法,这个两个方法的本质上会存在有死锁的嫌疑,所以从JDK1.4开始将其就已经列为不建议使用的方法了。但是在JDK1.5开发JUC框架之后,考虑到JUC框架之中的各种实现机制时开始试图还原之前被废弃的操作,于是就有了LockSupport这个类。

  这个类里面有两个方法:

  • 挂起
public static void park(Object blocker) {    Thread t = Thread.currentThread();    setBlocker(t, blocker);    unsafe.park(false, 0L);    setBlocker(t, null);}
  • 恢复
public static void unpark(Thread thread) {    if (thread != null)        unsafe.unpark(thread);}

 

范例:观察挂起与恢复执行

package so.strong.mall.concurrent;import java.util.concurrent.locks.LockSupport;public class LockSupportDemo {    private static String msg = null;    public static void main(String[] args) {        final Thread mainThread = Thread.currentThread(); //获取当前线程        new Thread(new Runnable() {            @Override            public void run() {                try {                    msg = "itermis.com";                } finally {                    LockSupport.unpark(mainThread); //不管线程的操作如何,都要解除挂起状态                }            }        }).start();        LockSupport.park(mainThread);        System.out.println("**********主线程执行完毕,msg=" + msg);    }}
**********主线程执行完毕,msg=itermis.com

  

  

转载于:https://www.cnblogs.com/itermis/p/8992009.html

你可能感兴趣的文章