一:java 并发编程演变
a)
1.volatile 轻量级锁,锁字段
2.synchronized 无锁状态->偏向锁(经常使用同一个同步对象)->轻量锁->重量锁
b)
1.ThreadPoolExecutor 或者 用Concurrent包中的Executors 中的四种java自带线程池
2.ForkJoinPool
public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,
BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler);
。CPU密集型任务配置尽可能小的线程,如配置Ncpu+1个线程的线程池。IO密集型任务则由于线程并不是一直在执行任务,则配置尽可能多的线程,如2*Ncpu。
c)
1.runnable 每个线程没有返回值
2.callable 每个线程有返回值()
3.Future 获得每个线程的返回值.future.get();
a)
1.volatile 轻量级锁,锁字段
2.synchronized 无锁状态->偏向锁(经常使用同一个同步对象)->轻量锁->重量锁
b)
1.ThreadPoolExecutor 或者 用Concurrent包中的Executors 中的四种java自带线程池
2.ForkJoinPool
public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,
BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler);
。CPU密集型任务配置尽可能小的线程,如配置Ncpu+1个线程的线程池。IO密集型任务则由于线程并不是一直在执行任务,则配置尽可能多的线程,如2*Ncpu。
c)
1.runnable 每个线程没有返回值
2.callable 每个线程有返回值()
3.Future 获得每个线程的返回值.future.get();