#1. 次のプログラムの実行結果 () (1 つ選択)
public static void main(String[] args) { Thread t=new Thread(){ public void run(){ pong(); } }; t.run(); System.out.println("ping"); } static void pong(){ System.out.println("pong"); }
答え: B
分析: スレッドを開始するには、start() メソッドを呼び出す必要があり、t.run() メソッドはオブジェクト名を使用します 分析: スレッドを開始するには、start() メソッドを呼び出す必要があります。 run() メソッドはオブジェクト名を使用します。2. 次のメソッドのどれを使用して実行可能なクラス ()
A. パブリック クラス X を実装します。 Runnable{public void run() {……}} B. public class X extends Thread{public void run() {……}}C. public class X extends Thread{ public int run() {……}}D. public class Interface3. Java マルチスレッドでは、スレッドが発生しない次のメソッドを使用してください。ブロッキング状態に入る ()
A. sleep()B. Suspend()
C. wait()
D . yield()答え: D
分析: yield によりスレッドが準備完了状態になります4. sleep( について) ) と wait() の場合、以下の誤った記述は ()
A. sleep スレッドクラス (Thread) のメソッドであり、wait は Object クラス# のメソッドです##B. スリープはオブジェクト ロックを解放せず、待機はオブジェクト ロックを放棄します
##C. スリープはスレッドを一時停止しますが、監視ステータスは保持されたままで、完了後に自動的に回復しますD. Wait の後、待機中のロック プールに入り、このオブジェクトに対して通知メソッドのみを発行してオブジェクト ロックを取得し、実行状態に入ります。
回答: D
分析: このオブジェクトの通知メソッドの後、オブジェクト ロックが取得され、実行状態ではなく準備完了状態になります。また、このオブジェクトのnotifyAllメソッドもオブジェクトのロックを取得し、実行状態ではなく準備完了状態になる場合があります#5.以下のロック機構のうち、スレッドの安全性は保証できません()
#A. ロック#B. 同期
C. 揮発性
##答え: C
6. 以下で説明する手順のうち、プロセスを作成するために必要な手順は ()
A. スケジューラがプロセスに CPU を割り当てるB. プロセスを作成する制御ブロックC. プロセスにメモリを割り当てる
D. ファイル記述子をプロセスに割り当てる##答え: BC
7 .ロックフリープログラミングの一般的な方法は何ですか? ()#A. カウンタには、アトミック加算を使用できます
#B. プロデューサーとコンシューマーが 1 つだけあれば、リング バッファへのロックなしのアクセスを実現できます (リング バッファ)
C. RCU (読み取り-コピー-更新)、新旧コピー切り替えメカニズム、古いコピーには遅延リリースを使用可能
D. CAS (比較およびスワップ) )、ロックスタックなし、ロックフリーキュー待機など
回答: D分析: A この方法はあまり優れていませんが、一般的です
BProducerConsumerQueue はこれで、
C は Linux カーネルで広く使用されています。
D は本質的に楽観的ロックであり、操作が非常に困難です。単一のプロデューサーと複数のコンシューマー、または複数のプロデューサーと単一のコンシューマーが存在することがより一般的であり、ABA の問題が発生するのは簡単ではありません。
BProducerConsumerQueue はこれで、どこにでもあります
C Linux カーネルで広く使用されていますD 基本的には楽観的ロックですが、操作が非常に困難です。 。これは、単一のプロデューサーと複数のコンシューマー、または複数のプロデューサーと単一のコンシューマーの場合によく発生し、ABC 問題に遭遇するのは簡単ではありません
以上がJava マルチスレッドの面接の質問、回答を含む多肢選択の質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。