私はスレッドが同期メソッドを完了するまでキーを放棄するだけだと言っているJavaマルチスレッドチュートリアルを読んでいますが、次のコードを実行すると(約20回):
public class SyncDemo implements Runnable{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
sync();
}
}
private synchronized void sync() {
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args) {
SyncDemo s = new SyncDemo();
Thread a = new Thread(s, "a");
Thread b = new Thread(s, "b");
a.start();
b.start();
}
}
a
のみを出力しますその後、
b
、現在のスレッドは
sync()
の後に毎回ロックを解除するため、それらの混合シーケンスを期待しますループ内で実行されますか?したがって、他のスレッドにその名前を印刷する機会を与えますか?
回答 1 件
関連記事
- スレッドがPythonスレッドでまだ実行されているかどうかを確認します
- ビューコントローラを再割り当てした後でもprogressViewの進行状況を表示するにはどうすればよいですか?
- リアルタイムデータベースが非アクティブ化された後も、Firebase Cloud Messaging APIは機能しますか?
- 見つかったすべての提案を試した後、IBOutletはまだゼロです
- ラップトップのsmbサービスをオフにした後も、smb共有が引き続き利用できるのはなぜですか?
- libc ++:閉じた後でもストリームがまだ良いのはなぜですか
- SQL:Group Byステートメントの後にレコードが重複しています
- Threadsleep()の後にコードを実行し、スリープしている場合にのみキャンセルできるスレッド
関連した質問
- スレッドは、待機の問題の後に機能しないことを通知します。java
- プログラムが無限ループにあるときに他のボタンをクリックするにはどうすればよいですか?
- Javaプロデューサーコンシューマーストップコンシューマースレッド
- executorserviceにスレッドを追加すると、速度が低下するだけです。
- 同期およびスレッド間通信との混同
- sleep()時にメソッドを中断し、例外が発生しない
- Javaで並列スレッドの正しい反復を行う
- 初期化されていない可能性があるときに別のスレッドからスレッドを閉じる方法
- プロジェクトルーム:仮想スレッドを使用すると、パフォーマンスが向上する理由は何ですか?
- スレッド数を動的にスケーリングするJavaExecutorService
プログラムには、特定の実行順序を要求するものは何もありません。そのため、ランタイムは、現在の状況で最も意味のある方法でスレッドをスケジュールします。順序に影響を与える可能性のある要因は、プロセッサの数、負荷状況などです...