Java基础 同步代码块

同步代码块:

利用同步代码块把操作共享数据的代码给锁起来,让同步代码块里面的代码是轮流去执行的

 

格式:

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 t1 = new Ticket();
Ticket t2 = new Ticket();
Ticket t3 = new Ticket();
t1.start();
t2.start();
t3.start();
}

posted @ 2023-10-27 19:45  1stzz1  阅读(75)  评论(0)    收藏  举报