易截截图软件、单文件、免安装、纯绿色、仅160KB

java并发编程实践 笔记(1)

线程安全 什么是线程安全(thread-safe)? 一个类,如果能够在多线程并发访问的环境下(不管线程访问的顺序)正确表现自己的行为,并且无需外部调用添加任何同步之类的操作,这个类就是线程安全的。
这个正确性可以这么理解,就是说多线程访问的结果不会不同于单线程的访问。
线程安全的类不需要外部调用提供任何附加的同步。 无状态(stateless)的类永远是线程安全的。
什么是无状态的类?没有实例变量(field),也没有引用其它类的field。 原子性 A race condition occurs when the correctness of a computation depends on the relative timing or interleaving of multiple threads by the runtime; in other words, when getting the right answer relies on lucky timing. 最常见的race condition是check-and-act。要防止这种race condition,我们需要原子性的操作。什么是原子性呢,就是说,你这个操作在执行的过程中,对于你操作的状态上其它的操作(包括你自己)要么全都执行完了,要么还没开始。
想说句通顺的中国话怎么这么难啊,还是给出原文吧: Operations A and B are atomic with respect to each other if, from the perspective of a thread executing A, when another thread executes B, either all of B has executed or none of it has. An atomic operation is one that is atomic with respect to all operations, including itself, that operate on the same state. 来个例子 @NotThreadSafe
public class UnsafeCountingFactorizer implements Servlet {
private long count = 0;
public long getCount() { return count; }
public void service(ServletRequest req, ServletResponse resp) {
BigInteger i = extractfromRequest(req);
BigInteger[] factors = factor(i);
++count;
encodeIntoResponse(resp, factors);
}
}
@ThreadSafe
public class CountingFactorizer 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();


相关文档:

java学习体会

0.     学习一章掌握一张,然后再不断的用。
1.  找一些比较经典的例子,源码(源码爱好者), 每个例子比较集中一种编程思想而设计的,比如在我的实践当中,我曾经学习过一个很经 典的例子就是用Java实现的HotDraw(源自SmallTalk),你可以用rolemodel或hotdraw在 搜索引擎上找一下,我记不大清 ......

java架构师所需要的知识

选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。
一、Java编程入门类
对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用 ......

java 数组操作,从数组a中删除数组b中存在的元素

 //从数组a中删除数组b中存在的元素
 String stra[] = {"g","b","c","h","k"};//原始数组
  String strb[] = {"g","k"};   //移除的元素
  ArrayList list = new ArrayList();
//方法一
  for(int i=0;i<stra.length;i++){
   int n=0;
  ......

Java SWT 窗口居中对齐

public static void CentreWnd(Shell shell){
int width = shell.getMonitor().getClientArea().width;
int height = shell.getMonitor().getClientArea().height;
int x = shell.getSize().x;
int y = shell.getSize().y;
if (x > width) {
shell.getSize().x = width;
}
if (y > height) ......

Java单例模式


 1、饿汉式
  package singleton;
  /**
  * 饿汉式单例
  * @author 蒋明原
  *
  */
  public class HungrySingleton {
  /**jvm保证instance只被初始化一次*/
  private static HungrySingleton instance = new HungrySingleton();
  /**阻止外部使用new实例化对象*/
  private Hun ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号