
多线程
文章平均质量分 93
pmdream
每天进步一点点,如果没有学习那就是倒退
展开
-
[线程]操作系统线程是怎么切换的(用户态的内部切换)
前言多线程,会减少内核态,用户态的切换,从而提高性能。关于这块得好好学习处理一下。操作系统(哈工大李治军老师)32讲(全)超清这个课程中,用户级别线程和内核级别线程的课程之后得看一下。简述在没看这个课程之前,为什么要有线程,大概是这样的?因为一个进程,要进行多个指令,如果访问地址,需要有地址,要回到映射表中。执行不下去了,进程要切换,那么一个执行指令序列,要切换到另外一个执行指令序列,比如A函数 从b函数执行, 那么我们只切换指令,不切换映射表,那么就是线程了。所原创 2021-08-24 01:16:10 · 8206 阅读 · 1 评论 -
[线程]线程池的使用和7个参数的含义
前言线程池是一个很重要的面试点。面试前总是看看各种文字。不如自己整理整理,看看代码底层。面试也是关心1. 参数都是什么意思2. 有几种线程池,几种拒绝策略3. 底层源码4. 有哪些坑,线上遇到过问题吗?线程池的参数含义 /** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoo原创 2021-08-23 17:32:32 · 328 阅读 · 0 评论 -
[线程]java的线程状态以及如何新建线程
public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in the runnable * state is executing in the Java virtua.原创 2021-08-23 14:26:29 · 222 阅读 · 2 评论 -
[锁] synchronized与ReentrantLock
前言关于锁,这两个锁应该是面试最常见的内容;ReentrantLock原理深入理解Java并发之synchronized实现原理上面两个大佬的文章,应该是看来看去写得比较清晰明白的了。在回顾完这两个锁的实现,我又有一些新的疑问。疑问1.ReentrantLock的Node.SIGNAL这是什么东西,几种状态有什么意义2.CAS面试要掌握到什么程度呢?3.线程的中断?线程有哪些状态?4.AQS和cas5.操作系统线程是怎么切换的,内核态,用户态?6.底层的操作系原创 2021-08-22 16:17:27 · 138 阅读 · 1 评论 -
[阻塞队列]BlockingQueue来实现简易的生产消费
消费者:package com.dk.learndemo.queue;import java.util.Random;import java.util.concurrent.BlockingQueue;/** * @desc: Consumer * @date: 2021/3/29 3:34 下午 */public class Consumer implements Runnable { private BlockingQueue<Data> queue;原创 2021-03-29 17:17:02 · 240 阅读 · 4 评论 -
[volitate]volatile和synchronized特点
1.与volatile 与 synchronized 区别线程安全的两个方面: 执行顺序与内存可见。执行控制的目的是控制代码执行(顺序)及是否可以并发执行。内存可见控制的是线程执行结果在内存中对其它线程的可见性。根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存),操作完成后再把结果从线程本地刷到主存。synchronized关键字解决的是执行控制的问题,它会阻止其它线程获取当前对象的监控锁,这样就使得当前对象中被synchronized关键字保护的代码块无转载 2020-08-05 17:54:50 · 704 阅读 · 1 评论 -
[ThreadLocal]源码分析和内存溢出问题
前言:ThreadLocal必知必会。不多说1. 类的内部方法和属性2. 简单地使用场景public class DemoThreadLocal { private static final ThreadLocal<HashMap> threadLocal = ThreadLocal.withInitial(() -> new HashMap());// public static void setMap(HashMap map) {//原创 2020-07-02 11:57:02 · 368 阅读 · 0 评论 -
[线程相关]线程的状态,怎么开启新线程
1.线程的五种状态新建状态 new 线程创建。 Thread t = new MyThread(); 就绪状态 runnable当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行; 运行状态 running当CPU开始调度处于就绪状态...原创 2020-04-13 01:56:47 · 206 阅读 · 0 评论