タグ

Threadとconcurrencyに関するhikazohのブックマーク (2)

  • Java: サンタクロース問題 - lethevert is a programmer

    http://karetta.jp/article/blog/oneline/030756 これはJavaでも解いておかないとと思った。メモリ共有型マルチスレッドといったら、Javaだよね。 import java.util.*; public class Santa { static volatile boolean running = true; static ArrayList<Worker> forReindeer = new ArrayList<Worker>(9); static LinkedList<Worker> forElf = new LinkedList<Worker>(); static class Worker extends Thread { final List<Worker> queue; final String name; Worker (String

    Java: サンタクロース問題 - lethevert is a programmer
  • Clojureのいろんな並行処理の使い分け

    Clojureのいろんな並行処理の使い分け Clojureには標準でもagent系のsend, send-offに加え、future関数というスレッド起動系関数があります。 core.asyncの登場で、ここにgoマクロとthreadマクロが加わりました。 これらはすべて、背後ではJavaのExecutorsを使ってスレッドプールを作り、一度生成したスレッドの再利用を行いますが、それぞれ使っているスレッドプールが異なります。さらに関数自体の機能も異なるため、どれをつかったらいいのか迷ってしまうことがあります。 自分用に整理したので、メモとしておいておきます。 IOバウンドとCPUバウンドまず、Clojureのスレッド関連関数の用途は、大きく2種類にわけられます。それが、IOバウンドとCPUバウンドです。 IOバウンドな処理は、実行中の処理がCPUよりもIO処理に強く依存します。DBアクセス

    Clojureのいろんな並行処理の使い分け
  • 1