Java 多线程(二)
CycliBarrier. 等所有线程都达到一个起跑线后才能开始继续运行。
public class CycliBarrierTest implements Runnable { private CyclicBarrier barrier; public CycliBarrierTest(CyclicBarrier barrier) { this.barrier = barrier; } public void run() { //do xxxx; try { this.barrier.await();//线程运行至此会检查是否其它线程都到齐了,没到齐就继续等待。到齐了就执行barrier的run函数体里的内容 } catch (Exception e) { } } /** * @param args */ public static void main(String[] args) { //参数2代表两个线程都达到起跑线才开始一起继续往下执行 CyclicBarrier barrier = new CyclicBarrier(2, new Runnable() { public void run() { //do xxxx; } }); Thread t1 = new Thread(new CycliBarrierTest(barrier)); Thread t2 = new Thread(new CycliBarrierTest(barrier)); t1.start(); t2.start(); }}
这简化了传统的用计数器+wait/notifyAll来实现该功能的方式。
10 并发3定律计算机识别物体需要飞速的计算,以至于芯片发热发烫,而人在识别物体时却一目了然,却并不会导致某个脑细胞被烧热烧焦(夸张)而感到不适,是由于大脑是一个分布式并行运行系统,就像google用一些廉价的linux服务器可以进行庞大复杂的计算一样,大脑内部无数的神经元的独自计算,互相分享成果,从而瞬间完成需要单个cpu万亿次运算才能有的效果。试想,如果在并行处理领域有所创建,将对计算机的发展和未来产生不可估量的影响。当然,其中的挑战也可想而知:许多的问题是并不容易轻易就“分割”的了的。
作者: Dapple HouEmail:mmonkeyer@163.com