public class MyRunnable implements Runnable{
int ticket=0;
@Override
public void run() {
/*
1、循环
2、同步代码块(同步方法)
3、判断共享数据是否到了末尾,是的话如何处理
4、判断共享数据是否到了末尾,不是的话如何处理
*/
while(true){
if (method()) break;
}
}
//非静态的,锁对象就是this,就是我们创建的mr,mr是唯一的
private synchronized boolean method() {
if(ticket==100){
return true;
}else {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
ticket++;
System.out.println(Thread.currentThread().getName()+"在卖第"+ticket+"张票 ");
}
return false;
}
}
先写同步代码块,再抽取成方法