随笔分类 - 多线程高并发
摘要:一、ThreadLocal 在ThreadLocal中设置的值是当前线程独有的。往当前线程中设置的值只有当前线程可以访问 Thread.currentThread.map(ThreadLocal,对象) 每个线程往ThreadLocal中设置的值都是往当前线程的map中设置的,不同的线程设置值在不同
阅读全文
摘要:一、用户态和内核态 内核态:能访问所有指令 用户态:只能访问用户允许访问的指令,JVM工作在用户态 synchronized重量级锁:JVM要向某个资源加锁,要通过用户态向内核态申请资源 二、对象的内存布局 8字节的markword,记录了锁信息,gc信息,hashcode 4字节的类型指针,通过指
阅读全文
摘要:并发编程三大特性:可见性、有序性、原子性 一、可见性 java内存模型规定:所有变量都存在主内存中,每个线程有自己的工作内存。线程对变量的修改必须在自己的工作内存中修改,不能在主内存中修改 1、volatile保证可见性 public class MyVolatile { private stati
阅读全文
摘要:一、请解释一下对象的创建过程 public class T { int m = 8; } T t = new T(); 1、给m申请内存,将m进行半初始化,初始化0 2、调用构造方法,给m赋值8 3、将t对象的引用指向m 二、DCL与volatile问题 1、volatile:保证线程可见性,防止指
阅读全文
摘要:一、Java的6种线程状态 new:线程创建,还未启动 runnable:可运行状态,由线程调度器安排执行 ready:就绪状态 running:执行 waiting:等待被唤醒,如自旋 timed waiting:隔一段时间后自动唤醒 blocked:被阻塞,只有synchronized才会到该状
阅读全文
摘要:1、继承Thread,重写run方法,调用start启动 2、实现Runnable接口,重写run方法,调用start启动。 3、lambda表达式 public class MyThread { static class MyExtend extends Thread{ @Override pub
阅读全文
摘要:1、程序:可执行文件,exe 2、进程:操作系统进行资源分配的基本单位,双击exe文件变成一个进程,操作系统将文件放到内存中,cpu来执行 3、线程:进程内部调度执行的基本单位,多个线程共享进程。cpu找到进程的main方法,这就是一个主线程 4、线程是进程内部不同任务的切换 5、线程切换:t1线程
阅读全文