首页 > 代码库 > 并发(1)
并发(1)
并发快,一个是快在抢占更多处理器资源上,主要体现在多处理器机器运行并发程序。另外是减少没必要的同步等待,比如等待IO等。
Executor是一个接口只有一个方法execute(Runnable)
ExecutorService实现Executor接口并且加入其它方法submit,shutdown等
ThreadPoolExecutor是一个ExecutorService,其构造函数最长的参数列表有7个,以下把线程池资源比作公司岗位,线程比作员工
1、int corePoolSize核心骨干元老级别岗位个数,不用担心
2、int maximunPoolSize公司最多容纳多少人,再多的就不让进了,毕竟公司也是有预算的。
3、4、long keepAliveTime,TimeUnit unit公司对不干活的非元老级别员工的容忍期限,毕竟公司不养闲人。
5、BlockingQueue<Runnable> workQueue人力资源系统,用来调配调度人力资源的
6、ThreadFactory threadFactory,统一入职培训,学习基本技能啊,公司文化洗洗脑啊之类的
7、RejectedExecutionHandler handler: the handler to use when execution is blocked because the thread bounds and queue capacities are reached
Executors提供了几个静态方法产生ThreadPoolExecutor,有三个套路
newCachedThreadPool:核心数0-Integer.MAX_VALUE,存活时间60s,SynchronousQueue
newFixedThreadPool(int n):核心数n-n,显然这种情况下存活时间没有意义,LinkedBlockingQueue
newSingleThreadExecutor:核心1-1,其他同上。(多装饰了一个类,暂不细究)
他们都可以增加一个ThreadFactory 参数。
Daemon线程不能阻止JVM退出,如果系统中只剩下Daemon线程在运行的话,JVM会退出的。
子线程未被捕获的异常不会被父线程捕获,可以通过设置Thread的静态属性defaultUncaughtExceptionHandler来进行全局处理方案设置,也可以在子线程对象上setuncaughtExceptionHandler来针对性设置异常处理。
并发(1)