一、格式:
synchronized(锁对象){
可能会出现线程安全问题的代码(访问共享数据的代码)
}
二、注意:
1、代码块中的锁对象,可以是任意的对象。
2、但是必须保证多个线程使用的是同一个锁对象。
3、锁对象作用:把同步代码块锁住,只让一个线程在同步代码块中执行
三、举例
public class Demo02Synchronized implements Runnable{
private int ticketNum = 100;
Object obj = new Object();
@Override
public void run() {
while (true){
synchronized (obj){
if(ticketNum > 0){
//为了增强显示冲突效果,加入休眠
try {
Thread.sleep(10);
System.out.println(Thread.currentThread().getName() + "正在出售第"
+ ticketNum + "张票");
} catch (InterruptedException e) {
e.printStackTrace();
}
/*System.out.println(Thread.currentThread().getName() + "正在出售第"
+ ticketNum + "张票");*/
ticketNum--;
}
}
}
}
}
public class Demo02 {
public static void main(String[] args) {
Demo02Synchronized run = new Demo02Synchronized();
Thread t1 = new Thread(run);
Thread t2 = new Thread(run);
Thread t3 = new Thread(run);
t1.start();
t2.start();
t3.start();
}
}
输出结果:
Thread-2正在出售第100张票
Thread-2正在出售第99张票
Thread-2正在出售第98张票
Thread-2正在出售第97张票
Thread-2正在出售第96张票
Thread-2正在出售第95张票
Thread-2正在出售第94张票
Thread-2正在出售第93张票
Thread-2正在出售第92张票
Thread-2正在出售第91张票
Thread-2正在出售第90张票
Thread-2正在出售第89张票
Thread-2正在出售第88张票
Thread-2正在出售第87张票
Thread-2正在出售第86张票
Thread-2正在出售第85张票
Thread-2正在出售第84张票
Thread-2正在出售第83张票
Thread-2正在出售第82张票
Thread-2正在出售第81张票
Thread-2正在出售第80张票
Thread-2正在出售第79张票
Thread-2正在出售第78张票
Thread-2正在出售第77张票
Thread-2正在出售第76张票
Thread-2正在出售第75张票
Thread-2正在出售第74张票
Thread-2正在出售第73张票
Thread-2正在出售第72张票
Thread-2正在出售第71张票
Thread-2正在出售第70张票
Thread-2正在出售第69张票
Thread-2正在出售第68张票
Thread-2正在出售第67张票
Thread-2正在出售第66张票
Thread-2正在出售第65张票
Thread-2正在出售第64张票
Thread-2正在出售第63张票
Thread-2正在出售第62张票
Thread-2正在出售第61张票
Thread-2正在出售第60张票
Thread-2正在出售第59张票
Thread-2正在出售第58张票
Thread-2正在出售第57张票
Thread-2正在出售第56张票
Thread-2正在出售第55张票
Thread-2正在出售第54张票
Thread-2正在出售第53张票
Thread-2正在出售第52张票
Thread-2正在出售第51张票
Thread-2正在出售第50张票
Thread-2正在出售第49张票
Thread-2正在出售第48张票
Thread-2正在出售第47张票
Thread-2正在出售第46张票
Thread-2正在出售第45张票
Thread-2正在出售第44张票
Thread-2正在出售第43张票
Thread-2正在出售第42张票
Thread-2正在出售第41张票
Thread-2正在出售第40张票
Thread-2正在出售第39张票
Thread-2正在出售第38张票
Thread-2正在出售第37张票
Thread-2正在出售第36张票
Thread-2正在出售第35张票
Thread-2正在出售第34张票
Thread-2正在出售第33张票
Thread-2正在出售第32张票
Thread-2正在出售第31张票
Thread-2正在出售第30张票
Thread-2正在出售第29张票
Thread-2正在出售第28张票
Thread-2正在出售第27张票
Thread-2正在出售第26张票
Thread-2正在出售第25张票
Thread-2正在出售第24张票
Thread-2正在出售第23张票
Thread-2正在出售第22张票
Thread-2正在出售第21张票
Thread-2正在出售第20张票
Thread-2正在出售第19张票
Thread-2正在出售第18张票
Thread-2正在出售第17张票
Thread-2正在出售第16张票
Thread-2正在出售第15张票
Thread-2正在出售第14张票
Thread-2正在出售第13张票
Thread-2正在出售第12张票
Thread-2正在出售第11张票
Thread-2正在出售第10张票
Thread-2正在出售第9张票
Thread-2正在出售第8张票
Thread-2正在出售第7张票
Thread-2正在出售第6张票
Thread-2正在出售第5张票
Thread-2正在出售第4张票
Thread-2正在出售第3张票
Thread-2正在出售第2张票
Thread-1正在出售第1张票