今天写了几个小demo,都是一些基础的点废话不多说,上图吧
run方法和start方法的区别,看例子就很明显的知道了
线程的三种启动方式1.继承thread,2.实现runable接口,3.实现callable接口
join方法可以让使用方法的线程执行完了之后再执行后面的
synchronized关键字,给对象上锁
脏读,这里一个同步方法,一个异步方法。这里是在赋值之前就被读取了,所以读出来的数据是不对的,当然实际业务当中如果对脏读不在乎,可以忽略这个问题
锁的可重入,方法m1,m2都有锁,那m1是可以调用m2的,即使是同一把锁,反过来大家想想,如果不可以锁重入,那么就会造成调用m2时一直在等待,然后就死锁了。
当持有的锁的线程执行发生异常时,他是会将锁释放掉的
demo源码大家可以回复‘10000’获取