美文网首页
Java并发编程中应该注意的几点

Java并发编程中应该注意的几点

作者: 游杜渐 | 来源:发表于2017-05-15 19:20 被阅读8次

    常用的并发编程技巧:
    (1)永远在synchronized的方法或对象里使用wait、notify和notifyAll,不然虚拟机会生成 IllegalMonitorStateException。

    第一个问题比较容易发现,往往在单测就可以暴露出问题。

    (2)始终使用while循环来调用wait方法(而非if),永远不要在循环外调用wait方法。这样做的原因是尽管并不满足被唤醒条件,但是由于其他线程调用notifyAll()方法会导致被阻塞线程意外唤醒,此时执行条件并不满足,他将破坏被锁保护的约定关系,导致约束失效,引起意想不到的结果。

    第二个问题需要切记,这个问题往往会出现在刚接触并发编程的开发者身上。

    标准的使用方式
    synchronized(this){ while(condition){ this.wait(); } }
    (3)唤醒线程,应该使用notify还是notifyAll?当你不知道究竟该调用哪个方法时,保守的做法是调用notifyAll唤醒所有等待的线程。从优化的角度看,如果处于等待的所有线程都在等待同一个条件,而每次只有一个线程可以从这个条件中被唤醒,那么就应该选择调用notify。

    相关文章

      网友评论

          本文标题:Java并发编程中应该注意的几点

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