【发布时间】:2013-02-07 07:32:09
【问题描述】:
如果我有这样的课程:
class MultiThreadEg {
private Member member;
public Integer aMethod() {
..............
..............
}
public String aThread() {
...............
member.memberMethod(.....);
Payment py = member.payment();
py.processPayment();
...........................
}
}
假设 aThread() 是一个新线程,那么,太多线程同时访问共享的 member 对象会导致任何问题(如下访问规则)?
Rule 1 : ONLY reading, no writing to the object(member).
Rule 2 : For all the objects that need some manipulation(writing/modification), a copy of the original object will be created.
例如:在 payment() 方法中,我这样做:
public class Member {
private Payment memPay;
public payment() {
Payment py = new Payment(this.memPay);//Class's Object copy constructor will be called.
return py;
}
}
我担心的是,即使我为“写入”创建了对象副本(如在方法 payment() 中),访问 member 对象的线程过多同时会造成一些差异。
事实是什么?这种实现在每种情况下是否可靠(0 个或多个并发访问)?请指教。谢谢。
【问题讨论】:
标签: java multithreading jakarta-ee shared-memory