java多线程
KtoTi
多学点就满足了。
展开
-
多线程1
解决方法,在run方法前加上synchronized就能按顺序执行。原创 2017-09-27 22:17:55 · 160 阅读 · 0 评论 -
多线程2
一个对象都会获得一个锁,所以还是会造成混乱。 加上锁之后再加上static来修饰,得到的就是类级别的锁,是独占的,所以能保证同步。第二个例子 同一个类的两个方法加了synchrnized方法,说明是同步的,如果有2个现成执行a,b两个方法,锁会被占用,第一个线程完成之后,第二个才会执行,若第二个方法没有加synchrnized,说明是异步的,则不会被锁定,会同时执行。原创 2017-09-27 22:43:57 · 167 阅读 · 0 评论 -
脏读1
getvalue()方法必须要加synchronized 要不然其他线程来获取的时候,得到的就是修改之前的结果。 oracle数据库有个优点,就是一致读,数据如果异常会放在undo里面,实在不行就会报snapshottooold错误,也就是得不到错误的结果。原创 2017-10-08 20:27:54 · 209 阅读 · 0 评论 -
synchrnized细节1
1。锁重入 第二个小例子: 其实也就是多个方法都要加锁。存储过程例子:原创 2017-10-08 21:01:12 · 236 阅读 · 0 评论 -
volatile
线程引用isRunning 变量的时候,会copy一份到独立内存空间当中,所以线程不会停止,加上volatile,改变的值就会进入独立内存空间。也就是说volatile的作用只是让变量在多个线程中的可见,不具备原子性。而atomicInteger具备原子性,所以在该例子里可以得到最终结果10000,但是atomicInteger只能保证一个方法的原子性,若里面出现多个则不能保证,只能用synchrn原创 2017-10-09 22:02:25 · 233 阅读 · 0 评论