ロックは、スレッドの安全性の問題を解決するためのインターフェースを使用します

cn.itcast.demo16.Demo09.Lockパッケージ; 

インポートjava.util.concurrent.locks.Lock ;
インポートjava.util.concurrent.locks.ReentrantLock ;

/ **
* @author newcityman
* @date 2019年7月24日- 20 :38
*スレッドの安全性の問題を第三の選択肢を解決する:ロックロックを使用
* java.util.concurrent.locks.lockインタフェース
ロック実装は同期方法および文操作使用するよりも利用可能な、より広範なロックを提供*
*ロックインタフェースを方法:
*ボイドロック()ロックを取得
ボイドロック解除(*)ロックを解放
java.util.concurrent.Locks.ReentrantLockロックインタフェース実装*
*
*手順
* 1を、ロックインタフェース乗員位置実装ReentrantLockのを作成し
、* 2コードのセキュリティ上の問題がロック取得前にインターフェイスメソッドが表示される場合がありますロックロックを呼び出す
発生する可能性のあるセキュリティ上の問題の後にコードでロックロックインタフェースを解放UNLOCKメソッドを呼び出し、* 3
* /
publicクラスRunnableImplはjava.lang.Runnableの{実装
プライベートint型チケット= 100 ;

ロックリットルを= 新しいReentrantLockの(); @Override ます。public void 実行(){ ながら、(真){ l.lock(); {試みるスレッドを。睡眠(10) IF(チケット> 0){ システム。out.printlnを(。スレッド。currentThread()のgetName()+ "--->正在卖" + チケット+ "张票"); ticket-- ; } } キャッチ(InterruptedExceptionある電子){












e.printStackTrace();
} キャッチ(例外e){
e.printStackTrace();
} 最後に{
l.unlock()
}
}
}
}



パッケージcn.itcast.demo16.Demo09.Lock ; 

/ **
* @author newcityman
* @date 2019年7月24日- 20時44
* /
publicクラスDemo01TicketLock {
公共の静的な無効メイン(文字列[]引数){
RunnableImpl IMPL = 新しいRunnableImpl()
スレッドT1 = 新しいスレッド(のimpl)
スレッドT2 = 新しいスレッド(のimpl)
スレッドT3 = 新しいスレッド(のimpl)

t1.start();
t2.start();
t3.start();
}
}

おすすめ

転載: www.cnblogs.com/newcityboy/p/11240938.html
おすすめ