java 程序如何设置线程数
1、第一步:在java中,线程数设置一般是由线程池来控制的,池的大小决定了线程的数量,线程代码如下:
// corePoolSize:核心池的大小
// maximumPoolSize:线程池最大线程数
// keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止
// TimeUnit: 参数keepAliveTime的时间单位
// workQueue:一个阻塞队列
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10,
200, TimeUnit.MILLISECONDS,
new ArrayBlockingQueue<Runnable>(5));

2、第二步:上面的参数看前面2个,corePoolSize和maximumPoolSize,corePoolSize就用来创建线程,而maximumPoolSize就是用来限制创建线程的最大数量的

3、第三步:线程数量最优的办法就是以cpu的核心数来乘以2,比如是四核cpu就好就是8个线程,比如本电脑四核最好就是8线程

4、第四步:线程数和线程池的使用,在线程池中,线程是先进入到线程池,然后由这个池子来绝定立即执行还是等待执行,代码如下:
//实现自定义接口
BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(10);
pool = new ThreadPoolExecutor(8, 16, 1000, TimeUnit.MILLISECONDS, workQueue);
for(int i=0;i<10;i++) {
pool.execute(new ThreadTask("Task"+i));
}
pool.shutdown();

5、第五步:new ThreadTask是一个简单线程实现,用了lombok,代码如下:
@Data
class ThreadTask implements Runnable {
private String taskName;
public ThreadTask(String name) {
this.setTaskName(name);
}
public void run() {
//输出执行线程的名称
System.out.println("TaskName" + this.getTaskName() + "---ThreadName:" + Thread.currentThread().getName());
}
}

6、第六步:运行上面的线程池方法,可以看到线程的数量是由core参数来控制的,最大数是8,如图:

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:20
阅读量:77
阅读量:183
阅读量:122
阅读量:59