《实战Java 高并发程序设计》学习总结

1.Object类的wait()方法和notify()方法,是用来多线程之间通信的,比如一个线程,调用了对象A的wait()方法,那么这个线程就会停在wait() 这里,知道A.notify()方法执行,这个线程才会继续执行,注意到这里的notify()并不是公平的,当有多个线程,在等A的notify方法时,并不是先等待的先被唤醒,而是随机选择一个。


2.Object.wait()和Thread.sleep() 都可以让线程进入等待状态,区别在于Object.wait()执行后可以被唤醒,而且Object.wait()会释放对象锁,Thread.sleep()不会释放任何锁


3.等待线程结束的方法join(),因为有可能这个线程的执行需要用到其他线程的执行结果,就需要等待其他线程执行完毕。比如主线程等待子线程执行完毕,再继续执行。


4.线程调用yield()方法,表示谦让,表示这个线程占有资源已经完成了核心工作,可以暂时让出资源,大家再一起竞争。看谁能拿到资源进行执行。


5.volatile 易变的,不稳定的,用这个修饰变量,就表示告诉java虚拟机,这个变量是易变的。在它变化的时候,你要及时对其他线程可见。就是JMM(java内存模型)中的,可见性,原子性,有序性的第一个特性。


6.关键字synchronized可以有多种用法,主要是:

  • 指定对象加锁
  • 直接用于实例方法
  • 直接用于静态方法

猜你喜欢

转载自blog.csdn.net/u014209205/article/details/84779996