同步方法实现的功能也是只允许一个线程访问。
用法:把需要打包的的代码块写在一个方法里面,声明为
public class Tongbu{
public static void main(String[] args) {
Ticket1 ticket=new Ticket1();
new Thread(ticket,"线程一").start();
new Thread(ticket,"线程二").start();
new Thread(ticket,"线程三").start();
new Thread(ticket,"线程四").start();
}
}
class Ticket1 implements Runnable{
private int tickets=10;
public void run() {
while(true) {
saleTicket();
if(tickets<=0)
break;
}
}
//可以看成将同步块打包到一个方法里面
private synchronized void saleTicket() {
if(tickets>0) {
try {
Thread.sleep(10);
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"---卖出的票"
+tickets--);
}
}
}