JUC
文章平均质量分 75
xiaobai___1
这个作者很懒,什么都没留下…
展开
-
线程池详解、核心参数、拒绝策略
线程池是一种池化技术,它预先创建一组线程,用于执行异步任务。当有新任务到来时,线程池可以立即分配一个线程来处理,而不需要临时创建。这样可以减少因为频繁创建和销毁线程而导致的开销。原创 2024-03-30 22:49:04 · 1134 阅读 · 0 评论 -
CPU 密集型 和 IO密集型 的区别,如何确定线程池大小?
CPU密集型任务通常涉及到复杂的计算,如算法逻辑、数学计算等,其特点是CPU使用率高,多在这种类型的任务中,线程数量一般与CPU的核心数相匹配就足够了。原创 2024-03-30 22:22:08 · 623 阅读 · 0 评论 -
详解ThreadLocal
ThreadLocal是一个与线程相关的类,但它本身并不是一个Thread。这个类可以提供线程局部变量,与普通变量有所不同。虽然你可以实例化一个ThreadLocal对象,但当每个线程访问或设置它时,它们实际上是在操作本线程内的该对象的副本。这也意味着,这个对象在不同的线程中,副本的值是不一样的原创 2024-03-20 23:21:18 · 1097 阅读 · 0 评论 -
synchronized 五连问
怎样避免死锁?要避免线程死锁,可以采取以下几种策略:避免循环等待:确保系统中不存在循环等待资源的线程关系。可以通过合理分配资源顺序,使得每个线程按照一定的顺序请求资源,避免形成循环等待的闭环。限制资源请求:限制线程同时申请多个资源的能力,即一次只能申请一个资源,待使用完毕后再申请下一个资源。这样可以减少死锁发生的可能性。原创 2024-03-06 22:04:44 · 984 阅读 · 0 评论 -
四种常见的线程池
newSingleThreadExecutor:创建一个单线程的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定的顺序(FIFO, LIFO, 优先级)执行。这种线程池适用于需要保证任务顺序执行的场景。原创 2024-03-07 01:35:58 · 444 阅读 · 0 评论 -
volatile关键字用处和场景?
在C语言和Java中,它是一种特殊的类型修饰符,用来告诉编译器该变量可能会被意外地改变。这样,每次存取该变量时,编译器都不会对其进行缓存优化,而是直接从内存中读取或写入,提供了对特殊地址的稳定访问。在Java中,volatile提供了一种比synchronized更轻量级的同步机制,因为它不会引起线程上下文的切换和调度。但相较于synchronized,它的同步性较差,使用时需谨慎以避免出错。原创 2024-03-13 23:28:53 · 651 阅读 · 0 评论