今天在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是线程安全的了
从而印证了自己的想法,得解