首页 > 其他分享 >线程池

线程池

时间:2023-03-27 21:14:28浏览次数:26  
标签:临时 创建 任务 线程 pool1 CPU

1、线程池出现原因

以前写多线程时,用到线程的时候就创建(浪费时间);用完之后线程就消失(浪费资源)。

2、线程池主要核心原理

 

 3、线程池代码实现

(1)创建线程池

(2)提交任务

(3)所有的任务全部执行完毕,关闭线程池

 

e.g

//1.获取线程池对象

ExecutorService pool1 = Executors.newCachedThreadPool();

//2.提交任务

pool1.submit(new MyRunnable());

//3.销毁线程池

pool1.shutdown();

 

4、自定义线程池

参数:

其中,线程包括核心线程临时线程,当临时线程的空闲时间>设置的空闲时间时,临时线程被销毁,但是核心线程不会。

注意:当等待任务数量大于阻塞队列的最大值时,才会创建临时线程。

 

e.g

 

 

 

 

 5、线程池多大合适?

 

 //向Java虚拟机返回可用处理器的数目(即最大并行数)

int count = Runtime.getRuntime().availableProcessors();

 

CPU密集型运算:计算较多,但是读取本地文件或者数据库较少

 最大并行数+1(+1的原因在于如果前面的出问题了,后面的可以顶上)

I/O密集型运算:读取本地文件或者数据库较多

CPU的计算时间和等待时间可以用thread dump这个工具来测试。

 

标签:临时,创建,任务,线程,pool1,CPU
From: https://www.cnblogs.com/qiqi-yi/p/17262848.html

相关文章

  • 多线程 wait() notify的用法
    main类 packageendual;publicclassMainApp{ publicstaticvoidmain(String[]args){ Queryq=newQuery(0); Threadthread=newThread(newThrea......
  • 多线程——生产者和消费者(等待唤醒机制)
    生产者和消费者(等待唤醒机制)生产者消费者模式是一个十分经典的多线程协作的模式举例:   实现方式一: 线程的方法代码编写技巧,如run():步骤:(1)循环;(2)同步代码块;(3)判断......
  • 线程的状态
    多线程的6种状态  注意:Java中没有定义运行状态,所以线程只有6种状态。因为线程抢到CPU的执行权后,就交给操作系统了,在这个运行过程中虚拟机就不用管了,所以Java没有定义......
  • android实现多线程基础
    //创建线程类classMythreadextendsThread{@Overridepublicvoidrun(){//定义行为}}//实例化线程类MyThreadmt=newMyThread(“线程名称”);///......
  • 线程
    1、线程的生命周期    2、线程的安全问题因为线程在执行时,有随机性,CPU的执行权随时有可能被抢走。解决方法:把操作共享的代码锁起来 3、同步代码块把操作共......
  • 多线程中常见的成员方法
     MyThreadt=newMyThread();1、StringgetName()细节:如果没有给线程设置名字,线程也是有默认的名字的格式:Thread-X(X序号,从0开始)2、voidsetName(Stringname)细......
  • 【线程池】使用ThreadLocal请务必remove
    背景:在一次扫描中被提示:Field[SESSION_CONTEXT]oftypeThreadLocalmustcallremove()methodatleastonetimes.(line34)嗯?啥子情况?搜索了一下,发现:ThreadLo......
  • 原来还能这样看Java线程的状态及转换
    作者:小牛呼噜噜|https://xiaoniuhululu.com计算机内功、JAVA底层、面试、职业成长相关资料等更多精彩文章在公众号「小牛呼噜噜」大家好,我是呼噜噜,最近一直在梳理Jav......
  • 线程安全
    1.代码所在的进程含有多个线程,线程可能会同时运行这段代码,若所有的运行结果是相同的,且其他变量的值也和预期的是一样的,就是线程安全的。2.通常线程不安全的对象都是由全......
  • 线程和进程的区别【Android面试送命题】
    这道题面试出现的概率是百分之70下面我来讲下如何回答1,进程是资源管理的最小单位,线程是程序执行的最小单位2,每个进程都有自己的数据段代码段和堆栈段。线程通常叫做轻型......