第二章-并发程序基础

synchronized可以有多种用法:
*   1 指定加锁对象      : 对给定的对象加锁,进入同步代码前要获得给定对象的锁。
*   2 直接作用于实例方法 : 相当于对当前实例加锁,进入同步代码前要获得当前实例。
*   3 直接作用于静态方法 : 相当于对当前类加锁,进入同步代码前要获得当前类的锁。
使用join()方法后,表示主线程愿意等待当前线程执行完毕,跟着当前线程一起往前走
使用volatile来申明ready变量,告诉虚拟机,这个变量可能会在不同的线程中修改
两个线程T1 T2
* T1执行object.wait()时,它持有object的锁
* wait()方法执行后,T1会等待,并释放object锁。
*
* T2在执行notify()之前也会先获得object的对象锁,
* 当T2执行了notify()方法,会通知T1,会首先尝试重新获得object的对象锁
Thread.sleep()函数的 签名如下:
 *      public static native void sleep(long millis) throws InterruptedException
 *      使当前正在执行的线程休眠(暂时停止) 指定毫秒数

并发下的ArrayList和HashMap

代码见 :https://github.com/Zhengtianqi/jvmlearn/tree/master/src/com/bjut/TheWorldOfConcurrent

猜你喜欢

转载自blog.csdn.net/qq_23034755/article/details/85381320