タグ

スレッドに関するeinherjarのブックマーク (4)

  • 非同期処理とディスパッチャー

    24日・25日とWDDに行ってたわけですが。 講演者の皆様、UIスレッドとディスパッチャーの話で苦労されてた印象。この辺りの仕組み、どうなんだろうなーとか、少し書いておこうかと。 UIスレッドに紐付いたクラス まず前提。 UIスレッド まず、GUIがらみのクラスは、単一スレッドからしかアクセスできないように作ってあります。スレッド安全に作ろうとするとパフォーマンスが出ないので、いっそのこと、UIスレッド以外からアクセスがあったら例外を出して止まるように作ってあります。 この、GUIコンポーネントと紐付いているスレッドがUIスレッドです。 エンド ユーザーからの入力なんかを受け付けているのもこのUIスレッドで、UIスレッド上で時間がかかる処理をすると、UIがフリーズします。 なので、時間がかかる処理をするときは、一度別スレッドで処理して、結果をUIスレッドに戻すというフローが必要です。 WP

    非同期処理とディスパッチャー
  • 第3回 システムトラブルの原因はGCの実装を知れば見えてくる | gihyo.jp

    原因は大きく分けて3つあります。 1つめは、リソース不足です。たとえば、CPUのクロックやコアが足りず、処理の完了待ちであることなどが原因として考えられます。 図1 CPUのリソース不足の例 2つめは、M/W(ミドルウェア)からアプリケーションに提供されるスレッドや、コネクションのプールにあるリソースが不足していて、その提供待ち(無応答)になっている可能性です。 M/Wでプールしているリソースが不足した状況は、会社の書籍棚に1冊しかないを社員で順番待ちしている状況に似ています。1冊しかないため、今借りている人が返すまでは他の人は借りれません。 図2 M/Wでプールされたリソースが不足しているケース 1つめのケースで問題がGCにある場合、GCに割り当てるリソースのバランスが悪いことが原因です。たとえば、特定のプロセスに対するCPUリソースの割り当てが大きい場合、GCが起きると、CPUリソー

    第3回 システムトラブルの原因はGCの実装を知れば見えてくる | gihyo.jp
  • Java EE環境における非同期プログラミング - nekop's blog

    Java EE環境では基的にスレッドの生成は許されていません。この制限はEJB仕様書に記述されており、ブループリントなど他のドキュメントにも記載されています。これらの制限はかなり古い時代に考えうる最大の制限を記述したものであり、「ファイルにアクセスしてはならない」など今となってはあまり現実的ではない記述も多くなっています。しかしながら、「スレッドを生成してはならない」というのは依然多くのコンテナに適用される現在も有効な制限であり、実際にスレッドの生成などを行うと誤動作するケースがあります。今回は、なぜこのスレッドの制限があるのか、現実的にどうすれば良いのか解説します。 コンテナは様々なものをスレッドに結びつけて管理しています。様々なものというのは例えばセキュリティ、トランザクション、データソースなどのコンテナリソースです。コードのほうがイメージしやすいでしょうから、以下に擬似コードを挙げ

    Java EE環境における非同期プログラミング - nekop's blog
  • .NET TIPS スレッド・セーフなコレクション・オブジェクトを作成するには? - C# - @IT

    例えば、ArrayListオブジェクトの場合には、次のようにしてスレッド・セーフなコレクションを得ることができる。 ArrayList dangerousList = new ArrayList(); ArrayList safeList = ArrayList.Synchronized(dangerousList); この場合には、safeListオブジェクトに対するすべてのメソッドの呼び出しは同期を取りながら実行されるため、そのオブジェクトのロックは不要となる。 Synchronizedメソッドにより作成されるラッパー・オブジェクト Synchronizedメソッドが返すオブジェクトは、実際には各コレクション・クラスを継承したクラスのオブジェクトであり、そのクラスはコレクション・クラスのラッパー・クラスとなる。 例えばArrayListクラスの場合には、そのラッパー・クラスの名前は実際

  • 1