Java多线程同步在语言应用中十分的关键,我们在不断的学习中就会注意到这一点。下面我们就详细的看看如何才能更好的进行Java多线程同步的应用。下面的代码会对你有所帮助。
一个很重要的关键字就是线程同步synchronized,下面的火车票的售票系统的模型:同步分
同步块和同步方法:
- class SellThread implements Runnable
- {
- int tickets=100;
- Object obj=new Object();
- boolean b=false;
- public void run()
- {
- if(b==false)
- {
- while(true)
- sell();
- }
- else
- {
- while(true)
- {
- synchronized(obj)
- {
- try
- {
- Thread.sleep(10);
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- synchronized(this)
- {
- if(tickets>0)
- {
- System.out.println
- ("obj:"+Thread.currentThread().getName()+
- "
- sell tickets:"+tickets);
- tickets--;
- }
- }
- }
- }
- }
- }
- public synchronized void sell()
- {
- synchronized(obj)
- {
- if(tickets>0)
- {
- try
- {
- Thread.sleep(10);
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- System.out.println("sell():"+Thread.currentThread
- ().getName()+
- " sell tickets:"+tickets);
- tickets--;
- }
- }
- }
- }
通过网上资料得知:同步块和同步方法其实本质是一样的:都是对对象枷锁。Java多线程同步中每个对象都有一个监视器----锁,同步方法是利用this所代表的对象的锁,同步块利用的是同步块对象本身的锁。
【编辑推荐】