java什么时候需要同步_什么时候可以在Java中使用同步块?

甲同步块是一块代码,可以被用于在该方法的任何特定的资源执行同步。甲同步块用于锁定用于任何共享资源对象和同步块的范围是比小同步方法。

语法synchronized(object) {

//代码块

}

在此,对象是对要同步的对象的引用。同步块可确保仅在当前线程成功进入对象的监视器之后,才对作为对象成员的方法进行调用。

示例class TicketCounter {

int availableSeats = 2;

void bookTicket(String name, int numberOfSeats) {

if((availableSeats >= numberOfSeats) && (numberOfSeats > 0)) {

System.out.println(name+" : "+ numberOfSeats + " Seats Booking Success");

availableSeats -= numberOfSeats;

} else {

System.out.println(name +" : Seats Not Available");

}

}

}

class TicketBookingThread extends Thread {

TicketCounter tc;

String name;

int seats;

TicketBookingThread(TicketCounter tc, String name, int seats) {

this.tc = tc;

this.name = name;

this.seats = seats;

}

public void run() {      synchronized(tc) { // synchronized block         tc.bookTicket(name, seats);

}

}

}

public class SynchronizedBlockTest {

public static void main(String[] args) {

TicketCounter tc = new TicketCounter();

TicketBookingThread t1 = new TicketBookingThread(tc, "Adithya", 2);

TicketBookingThread t2 = new TicketBookingThread(tc, "Jai", 2);

t1.start();

t2.start();

}

}

输出结果Adithya : 2 Seats Booking Success

Jai : Seats Not Available

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值