私はJavaマルチスレッドを学んでいますが、同期ブロックがどのように機能するかを理解するのは難しいことがわかりました:
synchronized(Object o){
// do something
}
オブジェクト o がブロックされていることを示すコード例を教えてください。これをどのように理解しているかとして、同期ブロックが実行されている間、別のスレッドからオブジェクト o にアクセスするとブロックされますか?
私はJavaマルチスレッドを学んでいますが、同期ブロックがどのように機能するかを理解するのは難しいことがわかりました:
synchronized(Object o){
// do something
}
オブジェクト o がブロックされていることを示すコード例を教えてください。これをどのように理解しているかとして、同期ブロックが実行されている間、別のスレッドからオブジェクト o にアクセスするとブロックされますか?
Java はマルチスレッド言語であり、複数のスレッドが並行して実行されてプログラムの実行が完了するため、Java での同期は重要な概念です。マルチスレッド環境では、Java オブジェクトの同期または Java クラスの同期が非常に重要になります。Java での同期は、Java キーワード「synchronized」および「volatile」を使用することで可能です。Java での共有オブジェクトへの同時アクセスは、スレッド干渉およびメモリ一貫性エラーなどの種類のエラーをもたらします。これらのエラーを回避するには、Java オブジェクトを適切に同期する必要があります。クリティカル セクションの 2 つのスレッドへの相互排他的アクセスを許可します。
詳細: http://javarevisited.blogspot.com/2011/04/synchronization-in-java-synchronized.html#ixzz2LOWwnCjH
この例を見てください