转:
Java Thread 的 run() 与 start() 的区别 - 灰色飘零 - 博客园
AtomicBoolean使用_xiaoguangtouqiang的博客-CSDN博客
Java run和start
1. 用start来启动线程,真正实现来多线程,无需等待run方法体执行完毕而继续执行下面的代码。
2. run只是一个普通的方法。但是多线程执行的时候,需要将要并行处理的代码放在run中,start方法启动线程后自动调用run,jvm的内存机制决定的
AtomicBoolean使用
1. Atomic类具有原子性,在多线程的环境下使用是线程安全的。【AtomicBoolean是java.util.concurrent.atomic的原子变量的类】
private static AtomicBoolean exists = new AtomicBoolean(false);
exists.compareAndSet(false, true)
2. exists.compareAndSet(false, true) 其中compareAndSet。方法有两个作用。
比较AtomicBoolean和expect的值,如果一致,执行方法内的语句
把AtomicBoolean的值设成update,比较最要的是这两件事是一气呵成的