个人简介

Echo Blog


江湖无名 安心练剑
  • Java Concurrency-08-reentrant lock
    锁是否可重入 锁分为可重入锁和不可重入锁。 可重入和不可重入的概念是这样的:当一个线程获得了当前实例的锁,并进入方法A,这个线程在没有释放这把锁的时候,能否再次进入方法A呢? 可重入锁 可以再次进入方法A,就是说在释放锁前此线程可以再次进入方法A(方法A递归)。 不可重入锁(自旋锁) 不可以再次进入方法A,也就是说获得锁进入方法A是此线程在释放锁钱唯一的一次进入方...
    2018-07-25 07:34:17 | Java
  • Java Concurrency-07-class object lock
    Object level Locking vs. Class level Locking 同步是指多线程。同步代码块一次只能由一个线程执行。 Java支持执行多个线程。这可能导致两个或多个线程访问相同的字段或对象。同步是使执行中的所有并发线程保持同步的进程。 同步避免了由于共享内存视图不一致而导致的内存一致性错误。 当一个方法被声明为同步(synchronized)时; 如果另一个...
    2018-07-25 06:44:36 | Java
  • Java Concurrency-06-深入浅出 CAS 算法
    为什么学习 CAS? java 5 中最好的增加之一是在类中支持的原子操作,比如 AtomicInteger、AtomicLong 等等,这些类内部依赖于一个名为CAS的算法(比较和交换)。 CAS 与 java 关键字 volatile 结合,是实现乐观锁的常见方式。 在本文中,我们将一起深入浅出地学习 CAS 算法。 CAS 思想 CAS的思想很简单:三个参数,一个当前内存...
    2018-07-24 08:11:28 | Java
  • Java Concurrency-05-lock intro
    序言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。 本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。 Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。 下面给出本文内容的总体分类目录: ...
    2018-07-24 08:11:28 | Java
  • Java Concurrency-04-Concurrency vs Parallelism
    Concurrency vs Parallelism 并发性意味着在没有特定顺序的情况下,在重叠的时间段内开始、运行和完成多个任务。 并行性指的是多个任务或某一特定任务的多个部分同时运行,例如在多核处理器上。 记住,并发和并行不是一回事。 Concurrency 当我们讨论至少两个或多个任务时,并发性基本上是适用的。 当一个应用程序可以同时执行两个任务时,我们称之为并发应用程序。...
    2018-07-24 08:11:28 | Java
  • Java Concurrency-03-thread safety
    java 线程安全 线程安全 定义线程安全性非常棘手。一个快速的谷歌搜索出现了许多这样的“定义”: 线程安全的代码是可以工作的代码,即使许多线程同时执行它。 如果一段代码只以保证多个线程同时安全执行的方式操作共享数据结构,那么它就是线程安全的。 难道你不认为上面的定义实际上没有传达任何有意义的东西,甚至增加了一些混乱。 虽然这些定义不能像那...
    2018-07-24 08:11:28 | Java
  • Java Concurrency-02-thread topic
    JDK 版本特性更迭 JDK 1.X 功能类 java.lang.Thread java.lang.ThreadGroup java.lang.Runnable java.lang.Process java.lang.ThreadDeath 异常类 java.lang.IllegalMonitorStateException java.lang.IllegalSt...
    2018-07-24 07:52:20 | Java
  • Java Concurrency-01-thread
    Thread 进程和线程的区别? 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。 线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。 但对...
    2018-07-24 07:34:24 | Java