@TOC(目录)一、bits/stdc.h介绍include<bits/stdc.h被称为万能头文件它包含了目前c所包含的所有头文件优点:一行代码解决头文件缺点:不可避免编译时间过长二、为VS添加万能库1.正常情况无法引用stdc.h正常使用VS2019的情况下,引用"bits/stdc.h"头文件时出现“无法打开源文件"bits/stdc.h"”错误的解决方法!在这里插入图片描述(https:/
@TOC(目录)一、说明线程池的生命周期线程池的状态runState和工作线程数量workerCount共同保存在AtomicInteger类型的控制变量ctl中ctl高三位保存运行状态(2^3^=85),低29位保存工作线程的数量(2^29^1)java//初始运行状态为RUNNING,线程数为0privatefinalAtomicIntegerctl=newAtomicInteger(ctlO
@TOC(目录)一、说明ThreadPoolExecutor继承Executor接口它有多个构造方法来实现自定义创建线程池,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等关闭线程池调用shutdown()、shutdownNow()、awaitTermination()方法二、理解shutdown()只关闭了提交通道,停止接收新任务,已提交的任务会继续执行直到完成,此方法不会阻塞,
@TOC(目录)一、说明RejectedExecutionHandler当线程池已经被关闭,或者任务数超过maximumPoolSize+workQueue时执行拒绝策略ThreadPoolExecutor.AbortPolicy默认拒绝策略,丢弃任务并抛出RejectedExecutionException异常ThreadPoolExecutor.DiscardPolicy直接丢弃任务,但不抛出
@TOC(目录)一、说明ThreadPoolExecutorJava提供的线程池Executor框架(https://blog.csdn.net/qq_46207024/article/details/124242552?spm=1001.2014.3001.5501)相关的工具类中,最核心的是ThreadPoolExecutor它有多个构造方法来实现自定义创建线程池,以内部线程池的形式对外提供管
@TOC(目录)一、说明Future的不足当通过.get()方法获取线程的返回值时,会导致阻塞也就是和当前这个Future关联的计算任务真正执行完成的时候才返回结果新任务必须等待已完成任务的结果才能继续进行处理,会浪费很多时间,最好是谁最先执行完成谁最先返回CompletionService的引入解决阻塞的问题以异步的方式一边处理新的线程任务,一边处理已完成任务的结果,将执行任务与处理任务分开进行
@TOC(目录)一、说明Future和FutureTask的关系Future是一个接口,无法直接创建对象,需配合线程池使用.submit()方法返回值Future来保存执行结果;而使用.execute()方法传入Runnable接口无返回值FutureTask是一个类,可以直接创建对象,其实现了RunnableFuture接口(继承Future接口)使用区别就是一个接口和实现类的不同写法二、理解F
@TOC(目录)一、说明Java提供了三种创建线程的方法实现Runnable接口继承Thread类本身通过Callable和Future创建线程Callable和Future的引入继承Thread或实现Runnable接口,任务执行完成后无法获取执行结果而要获取执行结果,必须通过共享变量或者使用线程通信的方式来达到效果Java1.5开始引入了Callable和Future,执行任务完成后可获取执行
@TOC(目录)一、说明线程池的引出通过new语句创建一个Java对象时,JVM就会为这个对象分配一块内存空间而线程的创建和销毁需要调用操作系统内核的API,成本较高线程池是一个容纳多个线程的容器,通过复用线程来达到执行多个任务的目的,对线程进行统一的分配,调优和监控,无需重复创建线程,优化了资源开销,由此引出Executor框架二、理解Executorjava.util.cocurrent包下E
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号