今天在javaeye讀
Rails 2.2 新特性提示 的時候,由于對于ROR沒有知識儲備和認識,所以對如下文產生了疑問
Rails的ActionController是每次HTTP請求創建實例的,因此本身就支持多線程運行;而ActiveRecord是單實例的,因此之前的版本不支持多線程。而Rails2.2改寫了ActiveRecord相應的實現,使得ActiveRecord是線程安全的了
我的疑惑是
而ActiveRecord是單實例的,因此之前的版本不支持多線程。
-------------
單實例,就意味著不能多線程么?
public class SimpleSingleton {
private static final SimpleSingleton instance = new SimpleSingleton ();
public static getInstance(){return instance;}
}
這個怎么能不支持多線程呢?
一直很疑惑,仔細想了想,慢慢推導
從 single-thread 到 multi-thread 的難點在于thread security
而activerecord是單例,不支持multi-thread, 意味著它肯定有很多私有屬性
從而是非線程安全的
所以改進:
1) 要么是改成每次創建新的
2) 要不就是去掉私有變量,而以參數形式重新構造
在看到文中
使得ActiveRecord是線程安全的了
從而印證了自己的想法,得解