线程池(知识点)

    [size=small;]固定线程池[/size]
<blockquote style="margin-right: 0px;" dir="ltr">[size=small;]public static executorservice newfixdthreadpool(int size);[/size]
[size=small;]此方法产生一个具有固定大小的线程池、如果有线程异常中止,将产生新的线程来替代他,参数size用来给出线程池的大小。[/size]
[size=small;]public static executorservice newsinglethreadexecutor();[/size]
[size=small;]此方法创建一个线程池,有点像newfixdthreadpool(1),在同一个时刻只可以执行一个任务,使用其可以保证多个任务是顺序执行的,并且其不可以被重新配置为支持多个线程。如果该线程异常中止,将产生新的线程来替代他。[/size]
[size=small;]上述两个方法返回的都是executorservice接口类型的引用。其实,此引用指向的就是线程池对象,可以通过executorservice引用调用其execute方法来使用线程池中的线程执行指定的任务,下面给出execute方法详细参数:[/size]
[size=small;]public void execute(runnable command);[/size]
[size=small;]command参数指向实现了runnable接口对象,次对象run方法中的代码描述了要执行的任务。[/size]
 
[size=small;]如果希望程序在执行完所有任务后退出,需要调用executorservice接口中的shutdown方法来关闭线程池,下面列出了两个关闭线程池的方法:[/size]
[size=small;]public void shutdown();[/size]
[size=small;]此方法关闭线程池,不再接受新的任务,等待旧结束则关闭所有池中线程。[/size]
[size=small;]public void shutdownnow();[/size]
[size=small;]此方法无论是否所有任务执行结束,立即关闭线程池,list中为等待执行的任务。[/size]
</blockquote><hr>[size=small;]public static executorservice newcachetheadpool();[/size]
[size=small;]此方法将创建一个线程池,线程池的大小不定,当执行任务时先选取重用缓存中已有空闲线程来完成任务,如果没有空闲线程,则创建新线程,空闲超过60秒的线程将被从线程池中删除。 [/size]
</blockquote><hr> [size=small;]延迟线程池[/size]
<blockquote style="margin-right: 0px;" dir="ltr">[size=small;]在实际开发中有时需要让指定在特定的时延之后执行,使用java中提供的延迟线程池可以很好的满足这种需求。同样,延迟线程池也是通过调用executor类的静态工厂方法来创建,下面列出了创建延迟线程池的两个静态方法:[/size]
[size=small;]public static scheduledexecutorservice newscheduledthreadpool(int corepoolsize);[/size]
[size=small;]此方法创建一个线程池,可以以一定的时延执行指定的任务,参数corepoolsize用于指出线程池中的线程数量。[/size]
[size=small;]public static scheduledexecutorservice newsinglethreadscheduledexecutor();[/size]
[size=small;]此方法用于创建延迟的单线程线程池,也就是说用此方法创建的延迟线程池中只有一个待命的线程。[/size]
[size=small;]scheduledexecutorservice 接口继承了executeservice接口,具有executeservice接口的所有方法。[/size]
[size=small;]scheduledexecutorservice 接口具有其特有的schedule方法来延迟执行指定的任务:[/size]
[size=small;]public scheduledfuture schedule(runnable runnable,long delay,timeunit unit);[/size]
[size=small;]此方法调动线程池中的线程,以一定的时延的执行指定的任务,参数runnable表示要执行的任务,delay参数是时延的长度,unit参数表示时延的时间单位。此方法的返回值类型为scheduledfuture,用来存放有返回结果的任务的结果信息。[/size]
</blockquote><hr><p dir="ltr"> [size=small;]自定义参数线程池[/size]<blockquote style="margin-right: 0px;" dir="ltr">[size=small;]如果上述几种线程池不能满足我们的需要,我们可以考虑使用threadpoolexecutor类来实现自定义的线程池,其内置了一个线程队列(blockingqueue)。[/size]
<span style="font-family: microsoft yahei; font-size: 12pt;">threadpoolexecutor</span><span style="font-family: microsoft yahei; font-size: 12pt;"> </span><span style="font-family: monospace; font-size: 12pt;"><span style="font-family: microsoft yahei;">的继承关系如下</span>:</span>
</span></blockquote> 

你可能感兴趣的:(java,工作)