synchronized 线程同步的三种使用方式

我用买火车票的案例来给大家举例;

1.在程序中加锁,同步代码块

public class HuoChePiao implements Runnable{
private int ticketNum=10;
@Override
public void run() {
for (int i = 1; i <=100; i++) {
synchronized (this) {
if(ticketNum>0){
System.out.println("我在"+Thread.currentThread().getName()+"买到了火车票,剩余"+(ticketNum--)+"张");
}
}
}

}


2.同步方法

public class HuoChePiao implements Runnable{
private int ticketNum=10;
@Override
public void run() {
for (int i = 1; i <=100; i++) {
 
buy();
 
}

}

public synchronized void buy(){
if(ticketNum>0){
System.out.println("我在"+Thread.currentThread().getName()+"买到了火车票,剩余"+(ticketNum--)+"张");
}
}


}

3.同步静态方法

public class HuoChePiao implements Runnable{
private static  int ticketNum=10;
@Override
public void run() {
for (int i = 1; i <=100; i++) {
 
buy();
 
}

}

public static synchronized void buy(){
if(ticketNum>0){
System.out.println("我在"+Thread.currentThread().getName()+"买到了火车票,剩余"+(ticketNum--)+"张");
}
}


}

猜你喜欢

转载自blog.csdn.net/qq_41931837/article/details/80115633