今日もレスポンス、明日もレスポンス


静かな開発室で今日もパチパチやってるけど
はっきり言ってだりー。


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) とするのは同じ。