多线程及其安全问题产生的原因

多线程的基本实现

多线程的实现,一个类实现Runnalbe接口  覆盖runnable接口的run方法

主函数New Thread对象,传入实现runnable接口的对象

t1.start()

t2.start()

多线程安全问题

由于Cpu提交控制权是随机的控制权,在哪个线程中,哪个线程就会执行,不在的话就不执行,这样的直接结果就是有些多个线程在执行同一个任务的时候

可能一个线程执行到一半另外一个线程拿到控制权,重新开始执行该任务,接下来第一个线程执行的是第二个线程执行一半的任务导致数据出错!

 被覆盖方法没有抛异常!

用synchorized(锁)

{

}

包括住共享数据即可解决问题!

或者 将操作封装成函数  加入 synchorized

同步函数使用的锁是固定的This

同步代码块使用的锁可以是任意对象

静态方法无法使用同步函数!因为同步函数锁的是this  静态函数并没有this

 

原文地址:https://www.cnblogs.com/hysys32/p/6659161.html