タグ

javaとvolatileに関するtarchanのブックマーク (2)

  • マルチスレッドにおけるMapオブジェクト - 半径5メートル

    身近でjava.util.HashMapのインスタンスがスレッドセーフでない事に起因したトラブルの話があったので、実際にサンプルを作って試してみました。 まず各スレッドで動作するRunnableなworkerクラス。 import java.util.Map; public class Worker implements Runnable { private Map<String, String> targetMap; public void setMap(Map<String, String> targetMap) { this.targetMap = targetMap; } public void run() { String threadId = String.valueOf(Thread.currentThread().getId()); for (int i = 0; i <

    マルチスレッドにおけるMapオブジェクト - 半径5メートル
    tarchan
    tarchan 2013/02/28
    >volatile変数による順序づけは、ロックによる順序づけよりもコストがかからない。クラスConcurrentHashMapでは、これを利用して、以下のような処理を行っている。
  • Javaスレッドメモ(Hishidama's Java thread Memo)

    概要 Javaでは、マルチスレッド用のクラスとしてThreadが用意されている。[2017-04-15] しかし新しいJavaでは、Threadを直接使う事はあまり無い。 ExecutorService/Future(JDK 1.5)やFork/Join(JDK 1.7)といったクラスが追加されているので、そちらを使う。 Java21で仮想スレッド(virtual thread)が導入された。[2023-09-23] これにより、従来のスレッドはプラットフォームスレッド(platform thread)と呼ぶようになった。 Javaでは、マルチスレッド用のThreadクラスが用意されている。 Threadを継承して独自のクラスを作り、runメソッドをオーバーライドして処理体を記述する。 class スレッドクラス名 extends Thread { @Override public vo

  • 1