今日もレスポンス、明日もレスポンス
静かな開発室で今日もパチパチやってるけど
はっきり言ってだりー。
WebアプリでVB並のレスポンスを求めること自体が無理なんだよなぁ。
データ量が少なければごまかせるけど
多くなった場合は早く「見せる」しかないんだよな。
そもそもの作り方が違うって言われたらそれまでだけど。
んで、同期処理
「ちゃんと同期化してます!」って言い張ったもののホントにされてるのか不安になるもの。
または言われて「ホントに同期化されてるの?」って言いたくなるもの。
public class ThreadTest extends Thread implements Runnable { /** 排他用オブジェクト */ private Object lock_ = new Object(); /** 出力メッセージ */ private String msg_ = null; /** * コンストラクタ */ public ThreadTest(String msg) { msg_ = msg; } /** * 出力メッセージを変更 */ public synchronized void setMsg(String msg) { msg_ = msg; } public static void main(String argas[]) throws Exception { ThreadTest th1 = new ThreadTest("thread-1"); ThreadTest th2 = new ThreadTest("thread-2"); th1.start(); th2.start(); Thread.sleep(1); th1.setMsg("thread-1-2"); Thread.sleep(1); th1.setMsg("thread-1-3"); } public void run() { synchronized(this) { while(true) { System.out.println(msg_); } } } }
runメソッド開始直後にロックしているのでメッセージが変わることはない。(同期処理されている)
これは同一インスタンス内での同期化だが、lock_ を static にすると同一クラス内での同期処理になる。
ちなみに↑ロジックのメソッドにsynchronizedを指定するのと、メソッド内で synchronized(this) とするのは同じ。