方法-潍坊达内负责整理
方法的作用就是创建Worker对象并启动这个对象里的线程(Worker里一个Thread类型的字段)。
类
线程池维护的线程其实是一组Worker对象,Worker封装了线程也继承了AbstractQueuedSynchronizer类并实现了Runnable接口,重写了void run()方法。至于为什么要继承AbstractQueuedSynchronizer类,请看下面的runWorker方法讲解。
方法
上面说到为什么Worker类要继承AbstractQueuedSynchronizer,其实是要用锁的状态来区分空闲线程和非空闲线程,在执行runWorker方法中:
获取任务时没有加锁(空闲状态,可中断线程)
天天你们会问,说代数差的打算学java吗?信任不少人都会有这一类顾虑,回答这种问题曾经,我能够认识一份数学题:两地距离1000米。
上官华容从A地以5米每秒的速度向B地走,栾怡乐从B地以每秒5米的速度向a走。请问:她们多久后遇到?遇到的地儿离B地有多远?这那就是一道易明白中学数学题,潍坊达内培训告诉我们,可对于代数不好的人,也许要想要好多时间。
可原来java不用你把汇总结果写出,你应该需要重视他的行动思维就行。
不过我自己也感觉,要用java来达到两个方面的问题,你只应该需要知晓个相对来说易明白的代数观念︰即加、减、乘、除和求余就行,原来和会背配方有些像。不少人没学习java的人,都认为代数不好,无法成为程序猿。原来代数跟java的相干打算整理为:精代数者,不见得会java,不通晓代数,也能学习java,如欲精java,必精代数,若已通晓代数者,学java不难也。
所以,代数不好就打算学java,可会比代数好的人难,要有很大的顽强,每天那就是要多去提高自己的行动和剖析能力。
要执行任务时才加锁(不允许中断线程)
在调用void tryTerminate()和void shutdown()这两个方法时,会中断空闲线程,所以没有在执行任务的线程就可能被中断。

线程池的配置
提供了四种静态工厂方法来创建四种不同配置的线程池:
接受一个int类型的nThreads变量,创建一个核心线程数和最大线程数都为nThreads的线程池(即最大线程数为nThreads),且使用一个无界的阻塞队列LinkedBlockingQueue.如果不设置核心线程超时的话,创建的线程是不会超时的。
创建一个核心线程数和最大线程数都为1的线程池(即最大线程数为1),且使用一个无界的阻塞队列LinkedBlockingQueue,不设置核心线程超时的话,创建的线程也是不会超时的。唯一线程可以保证任务的顺序执行,如果这个唯一的线程执行过程中因为异常而结束的话,在processWorkerExit方法最后会判断是否因异常而结束而创建一个新线程继续运行。
创建一个核心线程数为0,最大线程数为Integer.MAX_VALUE的线程池,超时时间为60秒,所以线程空闲时间超过60秒就会被回收。使用了一个同步队列作为阻塞队列,同步队列不存储元素,且在一端进行插入,另一端要有移除操作插入才会成功,否则插入操作会阻塞等待。
创建一个核心线程数为corePoolSize的线程池,用于指定的时间内周期性的执行所的任务。ScheduledThreadPoolExecutor继承自
以上就是潍坊达内给大家做的内容详解,更多关于UI的学习,请继续关注潍坊达内