ロックは、共有リソースにアクセスするために複数のスレッドを制御するためのツールです。一般的に、ロックは共有リソースへの排他的な訪問を提供します。一度にロックを取得するスレッドは1つだけです。ただし、一部のロックでは、ReadWriteLock(関連するロックのペアを維持し、1つは読み取り専用の操作用、もう1つは操作を書くために)などの共有リソースとのインタビューを許可する場合があります。
1. Lockは、無条件のラウンドバランス、タイミング、中断されたロック取得操作を提供します。すべてのロックおよびロック解除方法は重要です。
パブリックインターフェイスロック{void lock();モードBoolean TryLock(Long Timeout、TimeUnitユニット)は、nectredexceptionをスローします。
2. ReentrantLockは、同期されたロックインターフェイスを実現します。
3.ロックインターフェイスの規範的な形式では、最終的なブロックでlock.unlock()をリリースするには、リリースlock.unlock()が必要です。 Lock -GuardコードがTry Blockの外部外部外で異常である場合、それは決してリリースされません。
次のシミュレーションロックの使用法:印刷(文字列名)メソッドを呼び出す2つのスレッド(スレッドA、Bスレッド)があると仮定すると、スレッドAは「Zhangsan」文字列を印刷する責任があり、スレッドBは 'lisiの印刷を担当します' 弦。
1. Lint(String名)メソッドを追加すると、スレッドAは実行されておらず、Bスレッドが実行され始めた場合、印刷された名前には次の問題があります。
2.印刷名メソッドがロックに追加されると、相互除外または同期効果を実現するために、実行が完了した後にAが完了した後に印刷(文字列名)メソッドが実行されます。
com.ljq.test.thread。 string [] args){new locktest();} private void init(){new outputer(); ){try {thread.sleep(10);} catch(arternedexception e){e.printstacktrace();} haangsan ");}}}) @Override public void run(){true){try.sleep(10);} catch(interrupedexception {e.puter.output( "lisi");}}) Start();} Static Class outputer {new reentrantlock(){int len = name.lock(); ; i <len; system.out.print(name.charat(i));} aut.println();}