并发编程
文章平均质量分 95
法则求徒
苟有恒,何必三更眠五更起
展开
-
[线程池]CPU密集型和IO密集型对 CPU内核之间的关系
在开发过程中,经常要使用到线程池,然而在自定义线程池的过程中,核心线程数应该如何设置呢?一般网上的答案是,根据IO密集型和CPU密集型进行区别设置先不说实际运用中是否按照以上公式设置,我们先来看一下什么是IO密集型程序和CPU密集型程序。原创 2023-12-07 20:42:00 · 279 阅读 · 0 评论 -
[JUC] 线程池浅析
线程池是一种利用池化技术思想来实现的线程管理技术,主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。可以通过创建线程池来复用已创建的线程来降低频繁创建和销毁线程所带来的资源消耗。原创 2023-12-05 20:59:08 · 58 阅读 · 0 评论 -
[JUC]Synchronized的使用和1.6优化
数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖于JVM,而juc.Lock给出的答案是在硬件层面依赖特殊的CPU指令。原创 2023-11-30 22:30:37 · 1623 阅读 · 0 评论 -
【并发编程】消费者与生产者模型
生产者和消费是操作系统中一种重要的模型,它描述的是一种等待和通知的机制。 在日常生活中,卖东西的商家如超市,可以看作生产者,而顾客进行购买商品则就是消费者的角色;同理,实际的软件开发过程中,经常会见到这样一幕: 代码的某个模块负责生产数据(供货商),而生产出来的数据却不得不交给另一模块(消费者)来对其进行处理,在这之间我们必须要有一个类似上述超市的东西来存储数据(超市),这就抽象出了生产者/消费者模型。原创 2023-10-30 19:40:17 · 50 阅读 · 0 评论 -
【JUC】TreadLocal对象的使用
ThreadLocal是Java中的一个类,用于在多线程环境下保存线程相关的变量。它提供了一种线程级别的数据隔离机制,使得每个线程都可以独立地操作自己的变量副本,而不会与其他线程产生冲突。 具体而言,使用 ThreadLocal 时,每个线程可以通过或方法访问资源在当前线程的副本,而不会与其他线程产生资源竞争。这意味着 ThreadLocal 并不考虑如何解决资源竞争,而是为每个线程分配独立的资源副本,从根本上避免发生资源冲突,是一种无锁的线程安全方法。原创 2023-10-25 20:59:04 · 66 阅读 · 0 评论 -
【JUC】CAS策略
线程安全问题发生在多线程环境中 , 并且存在数据共享(即多个线程操作同一个数据)。 当多个线程访问某个类(数据)时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中**不需要任何额外的同步或协同,这个类(数据)都能表现出正确的行为,**那么就称这个类(数据)是线程安全的。 反之,当多个线程共享数据,数据产生与线程逻辑运行结果不一致的情况,(例如100张票被多个线程同时卖出一张,结果还剩99张)就是线程不安全。原创 2023-10-24 20:54:42 · 57 阅读 · 0 评论