当前位置:网站首页 > 专题 > 一般将来时结构(一般将来时结构与用法)

一般将来时结构(一般将来时结构与用法)

一般将来时结构(一般将来时结构与用法)创建线程是一个耗资源的过程。创建大连线程会导致系统内存溢出。所以为了更合理使用线程,通常我们使用线程池在解决1、简单使用一般将来时结构(一般将来时结构与用法)jdk提供一个工具类Executors可以方便创建线程池2、自定义线程池自定义线程池重点在于自定义以下几个参数1)使

创建线程是一个耗资源的过程。创建大连线程会导致系统内存溢出。

所以为了更合理使用线程,通常我们使用线程池在解决

1、简单使用

一般将来时结构(一般将来时结构与用法)

一般将来时结构(一般将来时结构与用法)

jdk提供一个工具类Executors可以方便创建线程池

2、自定义线程池

自定义线程池重点在于自定义以下几个参数

1)使用jdk原生代码

上面这段代码表示最大只能100个线程,超过就会拒绝。正常情况,如果使用SynchronousQueue,那么maximumPoolSize就要设置到足够大

上面这段代码表示最大只能10个线程,超过部分会放在队列中等待执行

2)使用google工具类

上面这段代码表示最大只能50个线程,超过就会拒绝

3)注意:

3、使用示例

并发100个线程池

类似发令枪,CountDownLatch的构造函数可以传入一个数字,代表倒计时多少个数。

主要方法:

1、示例代码

Future是一个未来对象,里面保存这线程处理结果,它像一个提货凭证,拿着它你可以随时去提取结果

1、什么时候使用

在两种情况下,离开Future几乎很难办。

使用过程既可以用CompletionService,也可以自己维护一个list将Future添加进去。

区别是:CompletionService是先完成的先返回,自己维护的list就是按顺序一个个取值

示例代码:

1、前台线程

定义:普通线程又可以称为用户线程,只完成用户自己想要完成的任务,不提供公共服务。

通过newThread()产生的线程默认都是前台线程。前台线程在程序执行完成后,才会自己退出,不会随着主线程的退出而退出。假设main线程已经退出了,但是该线程还未执行完成,还会继续执行直到线程自己退出。

java线程池启动的是前台线程

2、后台线程

定义:指在程序运行的时候在后台提供一种通用服务的线程,并且这种线程并不属于程序中不可或缺的部分。

后台线程又称守护线程,在前台线程全部退出后,后台线程会随着一起退出,并且不会执行未执行的finally语句。

在线程start之前通过setDaemon(true)方法可以将当前线程设置为后台线程

3、使用场景

代码示例

1、每次只允许2个线程执行

输出:

从输出日志可以看出,每秒只有2个线程在执行

2、控制两个线程执行顺序

输出:

从输出日志可以看出,两个线程交替执行,这里的关键是设置了信号量公平锁

上一篇: 巴基斯坦首都伊斯兰堡(巴基克斯坦首都)
下一篇: 古斯塔夫二世(古斯塔夫二世改革)

为您推荐

发表评论