同步代码块:
利用同步代码块把操作共享数据的代码给锁起来,让同步代码块里面的代码是轮流去执行的
格式:
synchronized (锁对象) {
操作共享数据的代码
}
细节:
1. 在最初,锁的状态是默认打开的,如果有一个线程进去了,锁就会自动关闭
2. 当锁里面全部代码都执行完毕了,线程出来了,锁才会自动打开
一般锁对象处 我们会写 当前类的字节码文件:类名.class,表示当前类的字节码文件对象,也就是 class 的对象,这个对象是唯一的
代码示例:
package pojo;
public class Ticket extends Thread{
public static Integer ticket = 1;
//锁对象,一定要是唯一的,所以要加 static
public static Object obj = new Object();
@Override
public void run() {
while (true) {
//同步代码块
synchronized (obj) {
if (ticket > 100)
break;
System.out.println(getName() + "第" + ticket + "张票");
ticket++;
}
}
}
}
--------------------------------------------------------------------------------
public static void main(String[] args) throws Exception {标签:ticket,同步,Java,代码,static,new,Ticket,public From: https://www.cnblogs.com/gagaya2/p/17793043.html
Ticket t1 = new Ticket();
Ticket t2 = new Ticket();
Ticket t3 = new Ticket();
t1.start();
t2.start();
t3.start();
}