美文网首页
自己总结

自己总结

作者: perfect_jimmy | 来源:发表于2017-01-05 14:51 被阅读11次

yeild

yeild是个native静态方法,这个方法是想把自己占有的cpu时间释放掉,然后和其他线程一起竞争(注意yeild的线程还是有可能争夺到cpu,注意与sleep区别)
在javadoc中也说明了,yeild是个基本不会用到的方法,一般在debug和test中使用。

join

join的意思是等待其他线程结束,如下,join方法添加之后,主线程会等待at线程结束之后再结束。
没有结束的话主线程就一直阻塞在那里
public class Test{
    public volatile static int i = 0;
    public static class AddThread extends Thread  {
        @Override
        public void run(){
            for (i = 0; i < 10000000; i++);
        }
    }
    public static void main(String[] args) throws InterruptedException{
        AddThread at = new AddThread();
        at.start();
        at.join();
        System.out.println(i);
    }
}

测试结果:如果放开at.join(),输出的i很小,如果加上,则一定会输出10000000
join的本质

while(isAlive()) { 
   wait(0); 
}
join()方法也可以传递一个时间,意为有限期地等待,超过了这个时间就自动唤醒。
这样就有一个问题,谁来notify这个线程呢,在thread类中没有地方调用了notify?
在javadoc中,找到了相关解释。当一个线程运行完成终止后,将会调用notifyAll方法去唤醒等待在当前线程实例上的所有线程,这个操作是jvm自己完成的。
所以javadoc中还给了我们一个建议,不要使用wait和notify/notifyall在线程实例上。因为jvm会自己调用,有可能与你调用期望的结果不同。

相关文章

  • 自己总结

    Java性能权威指南(3) Java编程思想 (1) 深入理解Java虚拟机 (2) 大话设计模式 (2) 重构 ...

  • 自己总结

    yeild join 测试结果:如果放开at.join(),输出的i很小,如果加上,则一定会输出10000000j...

  • 总结自己

    以前在与孩子沟通方面,会有一种以父母的权利压制孩子,那时孩子表面看起来听话,但会以别人的标准约束自己,很在乎...

  • 总结自己

    1.我是一个稳重的人 2.我是一个做事让人放心的人 3.我是一个做出承诺必须兑现的人 4.我是一个比较顾及家人感受...

  • 总结自己

    突然很想总结一下自己,五十年的人生岁月,涵盖了“性命生命和使命”!吃喝拉撒是性命,诗词歌赋是生命,责任担当...

  • 总结自己

    1.我想要什么? 属于自己的房子和汽车。 有自己的存款10万。 去旅游。 2.我会什么? 没有一技之长 3.我的优...

  • 总结自己

    总结自己这段时间的学习心得,就是四个字学以致用。自己学习的各种理论看的书籍,听别人说的,讲的,然后与自己的工作生活...

  • 总结自己

    1.太懒了,喜欢拖延,而且不会管理自己的时间。 2.最近生活习惯不好,总是晚睡,早上又起不来,总是匆匆忙忙赶到单位...

  • 总结自己

    日子一天一天的过,一星期又要结束了。 明天又休息了,厂里不忙了,开始放星期天了。 我了解的自己:老实人, 做事不喜...

  • 2016年,水馒头(SEM)年度总结

    导语:2016年就这样结束了,时间过得真快。每年年尾都要对自己写个总结,总结得失,总结自己有没有成长,总结自己哪些...

网友评论

      本文标题:自己总结

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