Java多線程同步具體實例講解
作者:佚名
Java多線程同步在實現的時候需要我們注意很多事情。下面我們就詳細的向大家介紹有關Java多線程同步中的代碼,希望大家有所幫助。
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所代表的對象的鎖,同步塊利用的是同步塊對象本身的鎖。
【編輯推薦】
責任編輯:張浩
來源:
CSDN