Java并发编程概要

  1. 线程开的越多,则性能越好吗?
    未必,影响多线程性能的因素有:上下文切换,竞争/死锁,资源限制等。对于这些因素要均衡考量,才能获得较好的性能。
  2. 并发控制/线程间的通信方式
    基本的并发控制原语有 volatile, synchronized, ReentrantLock, Atomics, wait/nofify/nofityAll 等
    用于多个线程协调的类: countDownLatch,CyclicBarrier
    信号量: Semaphore, 可控制并发的数量
    两个线程交换数据: Exchanger
    异步等待返回结果:Future,FutureTask (另外也可通过回调实现)
    Volatile: 修饰字段/成员变量,对该变量的访问均需从共享内存中获取,对它的改变必须同步刷新回共享内存,可保证所有线程对变量访问的可见性(CAS)
    Synchronized: 可修饰方法或同步块,确保多个线程在同一时刻只有一个位于同步块中,保证线程对变量访问的可见性和排他性(串行执行),保证线程的本地副本与主存的同步
  3. 多线程两种方式的区别(Thread类和Runnable接口)
    参考http://blog.csdn.net/michellehsiao/article/details/7639788
    a)Runnable 适合多个相同程序代码处理统一资源的情况,可将数据有效分离,较好体现面向对象的编程思想(适用于资源的共享,Thread不可)
    b)Runnable接口 可避免Java单继承机制带来的局限,可继承其他类的同时,实现多线程的功能(扩展该接口)
    c)Runnable 可增加程序健壮性,代码可被多个线程共享
    d)Thread是Runnable接口的子类
    实际应用中以Runnable为主
posted @ 2016-08-27 10:39  yunhe  阅读(298)  评论(1编辑  收藏  举报