240 发简信
IP属地:上海
  • 阻塞,等待,不占用cpu

    在阻塞式io中,如果一个线程在等待io操作,那么cpu还会分配时间片给该线程吗?

    在阻塞式io中,如果一个线程在等待io操作,那么cpu还会分配时间片给该线程吗?{运行态,就绪态,阻塞态} 运行态---wait/阻塞io-→阻塞态 运行态-------调度...

  • 单例模式双重检查外加volatile的原因是为了防止重排序,文中并没有解释清楚,理由如下:

    在双重检查锁模式中为什么需要使用 volatile 关键字?

    在java内存模型中,volatile 关键字作用可以是保证可见性或者禁止指令重排。这里是因为 singleton = new Singleton() ,它并非是一个原子操作,事实上,在 JVM 中上述语句至少做了以下这 3 件事:

    第一步是给 singleton 分配内存空间;

    第二步开始调用 Singleton 的构造函数等,来初始化 singleton;

    第三步,将 singleton 对象指向分配的内存空间(执行完这步 singleton 就不是 null 了)。

    这里需要留意一下 1-2-3 的顺序,因为存在指令重排序的优化,也就是说第 2 步和第 3 步的顺序是不能保证的,最终的执行顺序,可能是 1-2-3,也有可能是 1-3-2。



    如果是 1-3-2,那么在第 3 步执行完以后,singleton 就不是 null 了,可是这时第 2 步并没有执行,singleton 对象未完成初始化,它的属性的值可能不是我们所预期的值。假设此时线程 2 进入 getInstance 方法,由于 singleton 已经不是 null 了,所以会通过第一重检查并直接返回,但其实这时的 singleton 并没有完成初始化,所以使用这个实例的时候会报错

    JAVA并发编程:volatile关键字

    本文主要为记录和整理为主,在文章最低下会附上原文链接。把我遇到的知识点和问题梳理出来。 1.JAVA并发编程中的三个概念 1.原子性2.可见性3.有序性 原子性 原子性:即一...

  • 单例模式double check中的synchronize,不是已经保证了可见性了吗?既然已经保证了可见性,为何还需要instance用volatile修饰呢?

    JAVA并发编程:volatile关键字

    本文主要为记录和整理为主,在文章最低下会附上原文链接。把我遇到的知识点和问题梳理出来。 1.JAVA并发编程中的三个概念 1.原子性2.可见性3.有序性 原子性 原子性:即一...

  • Java String类为什么是final的,文章为何讲的是value属性是privacy final,这两个可以等价?

    标题的问题是,String类,不是value属性啊?

    Java String类为什么是final的?

    答:1.为了实现字符串池 2.为了线程安全 3.为了实现String可以创建HashCode不可变性 首先你要理解final的用途,在分析String为什...

  • @海之子_1cba 具体说说,string类如果不是final的,会怎么不安全,这是重点啊

    Java String类为什么是final的?

    答:1.为了实现字符串池 2.为了线程安全 3.为了实现String可以创建HashCode不可变性 首先你要理解final的用途,在分析String为什...

  • Java String类为什么是final的?

    答:1.为了实现字符串池 2.为了线程安全 3.为了实现String可以创建HashCode不可变性 首先你要理解final的用途,在分析String为什...

  • “所以java8中的HashMap的resize不需要重新计算hashCode”
    这是为什么?

    为什么HashMap线程不安全

    作者: 一字马胡[https://www.jianshu.com/u/86c421886c32] 转载标志 【2017-11-03】 更新日志 日期更新内容备注2017-1...

  • 讲得深入浅出

    PGP——密码技术的完美组合

    [TOC] PGP 简介 什么是 PGP PGP 是 1990 年左右由 菲利普·齐墨尔曼(Phil Zimmermann)个人编写的密码软件,现在依然在世界上被广泛使用。 ...

  • 120
    PGP——密码技术的完美组合

    [TOC] PGP 简介 什么是 PGP PGP 是 1990 年左右由 菲利普·齐墨尔曼(Phil Zimmermann)个人编写的密码软件,现在依然在世界上被广泛使用。 ...

  • 120
    重拾后端之Spring Boot(一):REST API的搭建可以这样简单

    重拾后端之Spring Boot(一):REST API的搭建可以这样简单重拾后端之Spring Boot(二):MongoDb的无缝集成重拾后端之Spring Boot(三...

  • Hi,请问这个是JDK哪个版本的ConcurrentHashMap

    ConcurrentHashMap详细总结

    上文详细介绍了HashMap的内容,但是由于HashMap不是线程安全的,因此使用起来会存在一定的风险。本文主要介绍另一个线程安全的类ConcurrentHashMap。 C...

  • 项目完整代码有吗?github链接是啥?

    Web Socket,Spring Boot解决方案

    前言 聊天室、推送怎么实现?我们需要保证消息的实时性,才能达到我们想要实现的效果,总不能用一个循环的 http、https 请求去营造一种消息实时的假象吧,所以在设计时我们需...