2015-05-19 59 views

回答

1

这是否使它线程安全?

​​方法有所帮助,但他们只在一次一个方法提供线程安全。例如StringBuffer是线程安全的,但前提是您只使用一种方法使其变得毫无用处。

另外Iterator即使集合是线程安全的,通常也不是线程安全的,同样,您需要调用多个方法,这意味着释放调用之间的锁定。

性能怎么样 - 如果我在同步方法中有数据库访问,性能会有多严重?

一些之间根本没有和很多。然而,正确性应该是第一位的,如果错误的话速度有多快并不重要。

1

答案和往常一样:取决于很多细节。

如果你的班级有内部状态,它在方法调用之间进行,它将不是线程安全的。 -EDIT-如果一个类/对象是线程安全的,广义上说,如果由多个线程所做的任何调用序列都会在实例中创建一个不一致的状态。例如,如果你的类打开了一个JDBC连接,那么你可以在没有问题的情况下继承那个连接,但是,如果你从一个方法给出了所述连接的ResultSet,那将是而不是安全,因为当另一个线程请求来自同一连接的另一个结果集ResultSet中可能会变得无效 - /编辑 -

如果你把一个性能损失首先依赖于访问多少时间在实际花费的数同步部分,即您的数据库访问需要多长时间