[学习随笔]并发编程与多线程二

当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协调,这个类都能表现出正确的行为,那么就称这个类是安全的。


无状态对象是线程安全的。

无状态的对象,例:

public class StatelessFactorizer implements Servlet{

public void service(ServletRequest req, ServletResponse resp){

BigInteger i = extractFormRequest(req);

BigInteger[] factors = factor(i);

encodeIntoResponse(resp, factors);

}

}

这是一个简单的因数分解Servlet。这个Servlet从请求中提取出数值,进行因数分解,然后将结果封装到响应中。

StatelessFactorizer是无状态的:它既不包含任何域,也不包含任何对其他类中域的引用。计算过程中的临时状态仅存在于线程栈上的局部变量中,并且只能由正在执行的线程访问。当它被多个线程执行时,没有共享的变量

由于线程访问无状态对象的行为并不会影响其他线程中操作的正确性,因此无状态对象一定是线程安全的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值