« 畑が見えるビールSAPPORO | トップページ | 浜名湖 »

2006.03.18

応募!

『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』無料プレゼント とのことで、応募してみる。

結城氏のぶろぐより。

すごい競争率になりそうだ。

この前作った http://salt.homelinux.com/bm/ では、1人100URL、ユーザが100人居れば100×100=10000URLの比較が発生する訳で、当然のことながら裏でスレッドを動かしてるのだが、Struts でどうやってスレッドを扱うのかと "struts thread" とかでぐぐってみても、こことかこことかしか見つけることができず、あまり参考にならなかった。

で、いろいろ試した結果、

public class ThreadHogehoge implements Runnable {
  public void run() {
    Context ctx = null;
    DataSource ds = null;
    try {
      ctx = new InitialContext();
      ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MySQL");
      //
      // hogehoge;
      //
    }
    catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (ds != null)
        ds = null;
      if (ctx != null)
        ctx.close();
    }
  }
}

とスレッドクラスを作っておいて、
アクションクラス側で、

public class FooAction extends Action {
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    final ThreadHogehoge threadHH = new ThreadHogehoge();
    HttpSession session = request.getSession();
    session.setAttribute("threadHH", threadHH);    // セッションに格納
    Thread thread = new Thread(threadHH);
    thread.start();
    //
    // hogehoge;
    //
  }
  //
  // hogehoge;
  //
}

と、セッションに格納して裏でDBをゴリゴリとアクセスすることに成功したのだが、、、
いまいち、これが正しい方法なのかわかってなかったりするんだよな。^^;
まぁ、特に問題なく動いてるから、いいのだろうけど。

ということで、この本で、java なスレッドに詳しくなれたらいいなぁ~

Win32 なら、CRT 使うときは _beginthread() を使わないとダメ。AfxBeginThread() で、sprintf() とか strcpy() とか、つい使っちゃうと、なんか変、なぜか変、てな現象で悩むので、そんなことが無い java はいいなぁ。C#の方が好きだけどさ。

と、書いたけど、間違っていたみたいだ。(にっしぃさんありがとうございます。)
正解は、CreateThread() を使うと変。かな?
むしろ、AfxBeginThread() を使うべき。だったか。
10年ぐらい前にハマったことで、忘れてました。;;
ちゃんと調べてから書くべきでした。^^;

人気 blog ランキングへ(←フリーソフトを作るモチベーションアップのために、ぜひ。)

 

|

« 畑が見えるビールSAPPORO | トップページ | 浜名湖 »

「プログラミング」カテゴリの記事

「得」カテゴリの記事

コメント

>Win32 なら、CRT 使うときは _beginthread() を使わないとダメ。AfxBeginThread() で、sprintf() とか strcpy() とか、つい使っちゃうと、なんか変、なぜか変、
そうだっけ?

投稿: にっしぃ | 2006.03.24 02:07

あれ?違いましたっけ?
CreateThread()だと変になるのでしたっけ?
むしろ AfxBeginThread() を使うのが正解?
大学の頃にハマったことなので記憶が曖昧でした。^^;;

投稿: Salt | 2006.03.24 22:27

> CreateThread()だと変になるのでしたっけ?
> むしろ AfxBeginThread() を使うのが正解?
その通りだったと思います。

投稿: にっしぃ | 2006.03.28 02:10

MFC使うときはAfxBeginThreadを使って、
_crtしか使わないときは、_beginThreadで、
Win32APIだけで組むときは、CreateThreadだけを使えでしたっけ?

投稿: はろ | 2006.03.28 02:31

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/20208/9139349

この記事へのトラックバック一覧です: 応募!:

» ゆっくりぃ [GOOD DAYS]
今日は家でゆっくり♪ だから暇つぶしにつきあってくださぁいw なんて言ったりしてねww [続きを読む]

受信: 2006.03.18 08:33

« 畑が見えるビールSAPPORO | トップページ | 浜名湖 »