応募!
『増補改訂版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 ランキングへ(←フリーソフトを作るモチベーションアップのために、ぜひ。)
| 固定リンク
「得」カテゴリの記事
- テンキー(2007.10.20)
- Vista(2007.09.23)
- 2区間定期券(2007.06.19)
- 1day無料キャンペーン(2007.04.14)
- Victor HR-VX100(2006.11.08)
「プログラミング」カテゴリの記事
- ListView の Height は WRAP_CONTENT を避けるべき(2015.12.23)
- プログラミングコンテストチャレンジブック(2010.09.27)
- 久しぶりに(2009.03.18)
- AVR-USB, hid-data(2008.11.24)
- AVR-USB、Tiny45 の internal RC oscillator で動作!(2008.11.08)
この記事へのコメントは終了しました。
コメント
>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