上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 19 下一页
摘要: 伪共享 什么是伪共享 ​ 为了解决计算机系统中主存与CPU之间的运行速度差问题,会在CPU与主存之间添加一级或者多级高速缓冲存储器(Cache),这个Cache一般集中于CPU内部当中,所以也叫CPU Cache,图中是两级Cache结构 ​ 在cache中,其中的每一行称为一个cache行,cac 阅读全文
posted @ 2021-10-06 21:16 Cherry_Shen 阅读(183) 评论(0) 推荐(0)
摘要: Java指令重排序 Java内存模型允许编译器和处理器对指令重排序以提高性能,并且只会对不存在的数据依懒性的指令进行重排序。在单线程下进行重排序可以保证最终执行的结果与程序顺序执行的结果一致。但是在多线程下就会存在问题:下面看一个例子: int a=1; int b=2; int c=a+b; 下面 阅读全文
posted @ 2021-10-06 18:03 Cherry_Shen 阅读(547) 评论(0) 推荐(0)
摘要: 1. Java中CAS操作 在Java中使用锁不好的地方就是当一个线程没有获取到锁时会被阻塞挂起,这会导致线程上下文重新调度与开销。Java提供了非阻塞的volatile关键字来解决共享变量的可见性问题。但是volatile只能保证共享变量的可见性,不能解决读-改-写的原子性问题。CAS即为Comp 阅读全文
posted @ 2021-10-06 17:48 Cherry_Shen 阅读(288) 评论(0) 推荐(0)
摘要: JDK8新特性-Lambda表达式 需求案例 创建一个线程 //开启一个新的线程 new Thread(new Runnable() { @Override public void run() { System.out.println("新线程中执行的代码" + Thread.currentThre 阅读全文
posted @ 2021-10-02 17:36 Cherry_Shen 阅读(95) 评论(0) 推荐(0)
摘要: Java中共享变量的内存可见性 我们首先来看一下在多线程下处理共享变量时Java的内存模型,如图所示 Java内存模型规定,将所有的变量都存放在主存中,当线程使用变量的时候,会把主内存里面的变量赋值到自己的工作区间或者叫工作内存,线程读写变量时操作的是自己的工作内存中的变量,Java内存模型是一个抽 阅读全文
posted @ 2021-10-02 16:01 Cherry_Shen 阅读(612) 评论(1) 推荐(2)
摘要: ThreadLocal 多个线程访问同一个共享变量时特别容易出现并发问题,特别是多线程需要对共享变量进行写入时。为了保证线程安全,一般使用者在访问共享变量的时候需要进行适当的同步,如图 同步的一般措施是加锁,这就需要使用者对锁有一定的了解,这显然加重了使用者的负担,那么有没有一种方法可以做到,当创建 阅读全文
posted @ 2021-09-28 17:48 Cherry_Shen 阅读(59) 评论(0) 推荐(0)
摘要: Windows使用WSL编译OpenJDK 安装Ubuntu以及配置国内镜像 首选确保windows10已经安装了ubuntu 更换ubuntu20.04国内镜像,这里我选择的是阿里云镜像 sudo vim /etc/apt/sources.list 将使用如下内容替换原先源 deb http:// 阅读全文
posted @ 2021-09-27 15:50 Cherry_Shen 阅读(474) 评论(0) 推荐(0)
摘要: 守护线程与用户线程 Java中线程分为两类,分别为daemon线程(守护线程),user线程(用户线程)。在jvm启动的时候会调用main函数,main函数所在的线程就是一个用户线程,其实在JVM中有很多守护线程,比如垃圾回收线程。守护线程和用户线程有什么区别?区别之一就是当最后一个非守护线程退出的 阅读全文
posted @ 2021-09-26 19:03 Cherry_Shen 阅读(67) 评论(0) 推荐(0)
摘要: 线程死锁 什么是线程死锁?死锁指的是两个或两个以上的线程在执行过程中因为争夺资源而造成的互相等待的现象。在无外力的情况下,这些线程一直会相互等待而无法继续进行工作。如图: 在上图中,线程A已经持有了资源2,它同时还想申请资源1,线程B已经持有了资源1,它同时还想申请资源2,所以线程A和线程B就因为相 阅读全文
posted @ 2021-09-26 17:59 Cherry_Shen 阅读(225) 评论(0) 推荐(0)
摘要: 线程中断 java线程中断是一种线程间的协作模式,通过设置线程的中断标志并不能直接终止该线程的运行,而是被中断的线程根据中断状态自行处理。 void interrupted()方法:中断线程,例如,当线程A运行时,线程B可以调用线程A的interrupted()方法来设置线程的中断标志为true并立 阅读全文
posted @ 2021-09-26 01:20 Cherry_Shen 阅读(79) 评论(0) 推荐(0)
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 19 下一页