/***
- 除了可以对代码块进行同步外。也可以对方法进行方法同步
- @author bo
*/
public class ThreadMet {
public static void main(String[] args) {
TestThreadM threadM = new TestThreadM();
Thread thread = new Thread(threadM);
//开启多线程
thread.start();
}
}
class TestThreadM implements Runnable{
private int tickets = 20;
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
saleTicket();
}
}
public synchronized void saleTicket() {//synchronized方法来实现同步....
if (tickets > 0) {
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
System.out.println(Thread.currentThread().getName() + "当前的票" +tickets--);
}
}
}
使用synchonized方法来实现线程之间的同步,当有一个线程进入到synchonized方法修饰的方法中的时候,其他的线程并不能进入此方法区域,直到第一个线程执行完成并且离开后,释放了它的响应权。其他线程才能进入到此区域..