package thread_1;
class SaleTickets implements Runnable{
private static int num = 100;
public void run(){
while (true)
{
synchronized(this)
{
if (num>0){
System.out.printf("%s线程正在卖第%d张票\n",Thread.currentThread().getName(),num--);
}
else
break;
}
}
}
}
public class testTickets {
public static void main(String[] args){
SaleTickets aa1 = new SaleTickets();
Thread t1 = new Thread(aa1);
t1.start();
Thread t2 = new Thread(aa1);
t2.start();
}
}
可以看出来以前的代码无法完成目标,原因是由于多线程的语法,cpu可能随时切换到另外一个线程,因此引入java的高级语法synchronized是十分必要的。
下面讲解synchronized的语法:
①synchronized可以修饰一个方法,格式如下:
void synchronized f();
②synchronized可以修饰一个代码块,如上面的卖票系统的代码:
用一个{ }包含起来。
synchronized(类对象名):
含义: