如何解决线程安全,使用线程同步机制
在java语言中每个对象都有一把锁,其实着把锁就是标记
synchronized()括号里面传的是多线程共享的数据,才能达到多线程共享
假设t1线程和t2线程并发,开始执行代码是遇到synchronized肯定会有一个先一个后
假设t1先遇到synchronized会占用这把锁,此时t2遇到了synchronized,会等待t1
使用用之后才能使用。
synchronized的三种写法
第一种 同步代码块
synchronized (线程共享对象){
同步代码块
}
第二种 在实例方法上使用synchronized
表示共享对象对象一定是this,并且同步代码块是这个方法体
第三种 在静态方法上使用synchronized
表示找类锁,类锁永远只有一把。