06 2020 档案
摘要:Java面试中经常会涉及关于volatile的问题。本文梳理下volatile关键知识点。 volatile字意为“易失性”,在Java中用做修饰对象变量。它不是Java特有,在C,C++,C#等编程语言也存在,只是在其它编程语言中使用有所差异,但总体语义一致。比如使用volatile 能阻止编译器
阅读全文
摘要:Java为我们提供了隐式(synchronized声明方式)和显式(java.util.concurrentAPI编程方式)两种工具来避免线程争用。 本章节探索Java关键字synchronized。主要包含以下几个内容。 synchronized关键字的使用; synchronized背后的Mon
阅读全文
摘要:在 Java并发之内存模型了解到多进程(线程)读取共享资源的时候存在竞争条件。 计算机中通过设计同步器来协调进程(线程)之间执行顺序。同步器作用就像登机安检人员一样可以协调旅客按顺序通过。 在Java中,同步器可以理解为一个对象,它根据自身状态协调线程的执行顺序。比如锁(Lock),信号量(Sema
阅读全文
摘要:Java是一门支持多线程执行的语言,要编写正确的并发程序,了解Java内存模型是重要前提。而了解硬件内存模型有助于理解程序的执行。 本文主要整理以下内容 Java内存模型 硬件内存架构 共享对象可见性 竞争条件 Java内存模型 Java内存模型最新修订是在Java5。 JSR-176 罗列了 J2
阅读全文
摘要:前言 并行编程势不可挡,Java从1.7开始就提供了Fork/Join 支持并行处理。java1.8 进一步加强。 并行处理就是将任务拆分子任务,分发给多个处理器同时处理,之后合并。 Stream API Java 8 引入了许多特性,Stream API是其中重要的一部分。区别 InputStre
阅读全文
摘要:前言 软件的运行依赖硬件基础设施。编程技术也因为硬件的不断发展而更新。通过了解计算机硬件发展,可以知道一些编程语言的设计目标发展方向。 过去半个世纪中,摩尔定律一直指导半导体与科技产业的发展。英特尔一直遵循摩尔定律,一般每隔两年左右就会发布新成果。不过现在有一些专家指出计算机已经达到摩尔定律的物
阅读全文
摘要:简介 双重检查锁定(也叫做双重检查锁定优化)是一种软件设计模式。 它的作用是减少延迟初始化在多线程环境下获取锁的次数,尤其是单例模式下比较突出。 软件设计模式:解决常用问题的通用解决方案。编程中针对一些常见业务固有的模版。 延迟初始化:在编程中,将对象的创建,值计算或其他昂贵过程延迟到第一次使用时进
阅读全文