没有合适的资源?快使用搜索试试~ 我知道了~
线程池的作用: 线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程 排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程 池中有等待的工作线程,就可以开始运行了;否则进入等待队列。 为什么要用线程池: 1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务 2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)
资源推荐
资源详情
资源评论
package com.snow.junit;
import java.util.LinkedList;
public class MyThreadPool extends ThreadGroup{
private boolean isClose = false; //线程池是否关闭
private LinkedList workQueue; //工作队列
private static int threadPollID = 1; //线程池ID
public MyThreadPool(int poolSize) {
super("threadPoolId" + ""); //调用父类构造方法,指定ThreadGroup的名称
setDaemon(true); //继承的方法,设置是否设置守护线程池
workQueue = new LinkedList(); //创建工作队列
for (int i = 0; i < poolSize; i++) {
new WorkThread(i).start(); //创建并启动工作线程,创建线程池最大容量数的工作线程
}
}
//向工作线程中添加一个任务,由工作线程来执行该任务
public synchronized void execute(Runnable task){
if (isClose) {
throw new IllegalStateException();
}
if (task != null) {
workQueue.add(task); //向消息队列中添加一个任务
notify(); //唤醒一个正在getTask()方法中等待任务的工作线程
}
}
//从工作队列中取出一个任务,工作线程会调用该方法
import java.util.LinkedList;
public class MyThreadPool extends ThreadGroup{
private boolean isClose = false; //线程池是否关闭
private LinkedList workQueue; //工作队列
private static int threadPollID = 1; //线程池ID
public MyThreadPool(int poolSize) {
super("threadPoolId" + ""); //调用父类构造方法,指定ThreadGroup的名称
setDaemon(true); //继承的方法,设置是否设置守护线程池
workQueue = new LinkedList(); //创建工作队列
for (int i = 0; i < poolSize; i++) {
new WorkThread(i).start(); //创建并启动工作线程,创建线程池最大容量数的工作线程
}
}
//向工作线程中添加一个任务,由工作线程来执行该任务
public synchronized void execute(Runnable task){
if (isClose) {
throw new IllegalStateException();
}
if (task != null) {
workQueue.add(task); //向消息队列中添加一个任务
notify(); //唤醒一个正在getTask()方法中等待任务的工作线程
}
}
//从工作队列中取出一个任务,工作线程会调用该方法
资源评论
瓜瓜0712
- 粉丝: 0
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功