一、为什么要线程同步?
同步:不是表示线程同步执行,而是表示线程之间协同执行
线程同步:当一个线程在执行时,另一个线程等待该线程执行完,再去抢夺CPU资源
当多线程访问统一资源时且对共享组员有写操作时,很容易出现线程安全,这时就需要线程机制来解决。
二、线程同步实现方式
1、同步代码块
(1)格式:
synchronized(同步锁){
可能会发生线程安全的代码
}
其中,需要创建一把锁,同步锁可以为任意对象,只要保证使用的是同一个锁
(2)代码示例
public class OneThread implements Runnable{
static int tickets=10;
//创建一把锁
Object obj=new Object();
@Override
public void run() {
while(true) {
//使用同步代码块,并指定锁
synchronized (obj) {
//判断是否还有票
if (tickets > 0) {
//执行卖票
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}