美文网首页技术栈
2019-04-18——Java 并发包 锁 LockSuppo

2019-04-18——Java 并发包 锁 LockSuppo

作者: 烟雨乱平生 | 来源:发表于2019-04-18 23:26 被阅读0次

    LockSupport

    LockSupport其实是一个简单的代理类,它里面的代码都是使用Unsafe类里面的native方法,这里可以简单看看sun.misc.Unsafe 本文主要学习里面的park和unpark方法。

    park

    阻塞线程

    unpark

    唤醒线程

    unpark函数为线程提供“许可(permit)”,线程调用park函数则等待“许可”。这个有点像信号量,但是这个“许可”是不能叠加的,“许可”是一次性的。可以理解为设置一个变量0,1之间的切换,也就是说permit的个数要么是0,要么是1。也就是不管连续调用多少次unpark,permit也是1个。

    park/unpark与wait/notify的区别

    unpark可以先于park调用。也就是我们在使用park和unpark的时候可以不用担心park的时序问题造成死锁。相比之下,wait/notify存在时序问题,wait必须在notify调用之前调用,否则虽然另一个线程调用了notify,但是由于在wait之前调用了,wait感知不到,就造成wait永远在阻塞。

    LockSupport 的park和Object的wait一样也能响应中断.


    相关文章

      网友评论

        本文标题:2019-04-18——Java 并发包 锁 LockSuppo

        本文链接:https://www.haomeiwen.com/subject/loaxgqtx.html