《Effective Java》阅读笔记66 同步访问共享的可变数据

  • 关键字synchronized可以保证在同一时刻只有一个线程可以执行某个方法或代码块。

  • Java规范保证对一个变量的读操作或者写操作是原子性(atomic,注意 i++是非原子性的,64位的long型或double型变量的读写操作也是非原子性的),但并不保证一个线程写入的值对另一个线程是可见的。
    参考

  • 避免使用Thread.stop()方法,而是采用轮询(poll)机制来终止一个线程。

  • 如果只需要线程间的交互通信,而不需要互斥,可以使用volatile关键字。