join方法
在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。
守护线程
Java虚拟机退出时Daemon线程中的finally块并不一定会执行
synchronized
锁的是对象。加在非静态方法上,锁的是当前对象【同一类中,不同非静态方法加synchronized,锁的是同一对象,不能同步执行】。加在静态方法上,锁的是当前类【同一类中,不同静态方法,同上】。加在代码块上,锁的是指定对象。
volitile:作用是修改后其它线程可见,不具备原子性。使用场景是一个线程写,其它线程读。
ThreadLocal:对外提供set get remove 方法。值的变动修改的为Thread.currentThread().threadLocals的值,key为该ThreadLocal对象,value为set的值。因此可以说每个线程都有该变量的副本
wait()、notify()、notifyAll()为Object的方法。
wait():释放调用对象的锁,因此需和synchronized搭配先锁住该对象。
notify:随机唤醒一个持有该对象锁的线程
notifyAll:全部唤醒持有该对象锁的线程。