![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 75
Lucifer Zhao
热爱软件开发,渴望提升自我;
希望我的指尖具有改变世界的力量
展开
-
对齐填充@Contended
对齐填充Padding(不够64字节用0填充)是用来解决伪共享问题,保证一个缓存行只读取一个数据,避免多个线程竞争同一个缓存行带来性能问题。CPU缓存是由多个缓存行组成的,缓存行是CPU和内存之间交互的最小单元,每个缓存行大小是64个字节,每次CPU读取数据以块为单位64个字节,一次读取一块数据(猜想上下位的数据也是需要的),避免多次交互,一个缓存行可以缓存多个数据(比如:X, Y, Z三个数据),当多个线程情况下,如果线程A修改数据X,线程B需要修改数据Y,但是都处于同一个缓存行,这时候会存在缓存行竞争,原创 2022-06-12 23:45:34 · 332 阅读 · 0 评论 -
Java线程池
Java提供了四种线程池:Executors.newFixedThreadPool(5); //创建固定数量线程的线程池Executors.newSingleThreadExecutor(); //创建只有一个线程的线程池Executors.newCachedThreadPool(); //创建一个线程数可动态伸缩的线程池,有多少请求,就创建多少个线程去处理Executors.newScheduledThreadPool(5); //创建带任务调度的线程池原创 2022-05-17 22:47:20 · 265 阅读 · 0 评论 -
synchronized锁(方法锁, 代码块锁)
synchronized锁可以解决线程安全问题,但是相应的,只要是锁,就会带来性能开销,所以尽可能减小锁的范围尤为重要。synchronized锁无非修饰普通方法,修饰静态方法,修饰代码块,我认为无非就两种(对象锁、类锁),只不过是锁的使用对象不同而已,实际上synchronized锁的作用范围,取决于使用对象的生命周期。接下来简单介绍几种不同影响范围的锁。...原创 2022-05-16 23:25:25 · 5876 阅读 · 0 评论 -
J.U.C包中的工具(ReentrantLock、AQS、CountDownLatch、Semaphore、CyclicBarrier、Condition、ForkJoin)
J.U.C包中的工具(ReentrantLock、AQS、CountDownLatch、Semaphore、CyclicBarrier、Condition、ForkJoin)简单使用原创 2022-05-16 22:25:57 · 192 阅读 · 0 评论 -
线程安全性问题
线程安全性问题:原子性、可见性、有序性原创 2022-05-16 22:13:46 · 599 阅读 · 0 评论 -
创建线程的四种方式
创建线程的四种方式:继承Thread类实现Runnable接口实现Callable接口:如果需要线程执行完得到一个返回值,选择此方式通过ThreadPoolExecutor线程池获取线程原创 2022-05-16 22:03:57 · 86 阅读 · 0 评论 -
生产者-消费者模型
一、Thread.wait()和notify()实现生产者消费者Thread的wait()方法阻塞线程,notify()方法唤醒线程。Producer模拟产者线程生产并保存到仓库,如果仓库满了,线程阻塞等待......public class Producer implements Runnable { private int size; private Queue<String> products; public Producer(int size,原创 2022-03-06 21:46:43 · 76 阅读 · 0 评论 -
Java多线程获取执行结果
一、Thread.join()特点:一个线程等待另一个线程结束后才能执行。利用此原理我们可以设置一个监控线程用来等待程序线程执行完毕后输出返回结果。public class Result { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value;原创 2022-03-01 22:14:18 · 3419 阅读 · 0 评论 -
六、并发编程
1. 线程线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。线程出现之前,任务的执行是以进程为单位的。1.1 线程的作用在多核CPU中,利用多线程可以实现真正意义上的并行执行。例如当前系统是八核CPU,那么意味着可以同时运行8个线程。 在一个应用进程中,会存在多个同时执行的任务,如果其中一个任务被阻塞,将会引起不依赖该任务的任务也被阻塞。通过对不同任务创建不同线程去处理,可以提升程序处理的实时性。 线程可以认为是轻量级的进程,线程的创建、销毁比进程更快原创 2021-03-10 17:05:56 · 429 阅读 · 0 评论