Java

作者: yousa_ | 来源:发表于2020-06-01 14:38 被阅读0次
    • JVM内存五大区域



    • 释放锁资源



      所谓的释放锁资源实际是通知对象内置的monitor对象进行释放,而只有所有对象都有内置的monitor对象才能实现任何对象的锁资源都可以释放。又因为所有类都继承自Object,所以wait()就成了Object方法,也就是通过wait()来通知对象内置的monitor对象释放,而且事实上因为这涉及对硬件底层的操作,所以wait()方法是native方法,底层是用C写的。
      其他都是Thread所有,所以其他3个是没有资格释放资源的
      而join()有资格释放资源其实是通过调用wait()来实现的。

    wait()方法   
    public final native void wait(long timeoutMillis) throws InterruptedException;
     
    join()方法
    public final synchronized void join(long millis)
        throws InterruptedException {
            long base = System.currentTimeMillis();
            long now = 0;
     
            if (millis < 0) {
                throw new IllegalArgumentException("timeout value is negative");
            }
     
            if (millis == 0) {
                while (isAlive()) {
                    wait(0);
                }
            } else {
                while (isAlive()) {
                    long delay = millis - now;
                    if (delay <= 0) {
                        break;
                    }
                    wait(delay);
                    now = System.currentTimeMillis() - base;
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:Java

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