java并发学习一:线程安全性【arlen】

2018-01-09  本文已影响0人  franky_hu
当做个线程访问某个类时,这个类始终都能表现出真确的行为,那么就称这个类是线程安全的。

   线程安全类可以认为是一个在并发环境和单线程环境中都不会被破坏的类。


@ThreadSafe
public class CountingFactorizer extends GenericServlet implements Servlet {
    private final AtomicLong count = new AtomicLong(0);

    public long getCount() { return count.get(); }

    public void service(ServletRequest req, ServletResponse resp) {
        BigInteger i = extractFromRequest(req);
        BigInteger[] factors = factor(i);
        count.incrementAndGet();
        encodeIntoResponse(resp, factors);
    }

    void encodeIntoResponse(ServletResponse res, BigInteger[] factors) {}
    BigInteger extractFromRequest(ServletRequest req) {return null; }
    BigInteger[] factor(BigInteger i) { return null; }
}

如果内置所不是可以重入的,那么下面这段代码将发生死锁:

public class Widget{
    public  synchronized void doSomething(){
        ....
    }
}
public class LoggingWidget extends Widget{
    public synchronized void doSomething(){
      System.out.println(toString() +": calling doSomething");
      super.doSomething();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读