一、volatile的作用 在《Java并发编程:核心理论》一文中,我们已经提到过可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有 ...
分类:
编程语言 时间:
2019-09-09 11:39:04
阅读次数:
115
重构:改善既有代码的设计代码整洁之道深入理解Java虚拟机Java并发编程的艺术《修改代码的艺术》《程序员的职业素养》代码大全程序员修炼之道深入理解java虚拟机Java并发编程实战(已下载)Effective java 中文版Spring 揭秘重构。已买入研磨设计模式 https://github ...
分类:
其他好文 时间:
2019-09-05 13:45:25
阅读次数:
122
锁的内存语义 锁的释放 获取建立的happens before关系 锁是Java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送信息. 假设线程A执行writer()方法,随后线程B执行reader()方法.根据happens before规则,这个 ...
分类:
其他好文 时间:
2019-09-04 09:55:46
阅读次数:
76
最近在看一本书《Java并发编程 核心方法与框架》,打算一边学习一边把学习的经验记下来,所粘贴的代码都是我运行过的,大家一起学习,欢迎吐槽。 估计也没多少人看我的博客,哈哈,那么我还是会记下来,天空不曾留下我的痕迹,但我已飞过,而在博客园留下了我的痕迹~ 1、Semaphore的初步使用 Semap ...
分类:
编程语言 时间:
2019-09-02 19:12:20
阅读次数:
113
一、Java内存8种同步操作 1.lock : 作用于主内存的变量,把一个变量标识为一条线程独占的状态 2.unlock : 作用于主内存的变量,把一个处于锁定的状态的变量释放出来,释放后的变量才可以被其他的线程的访问 3.read : 作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存中 ...
分类:
编程语言 时间:
2019-09-01 21:32:41
阅读次数:
83
并行相关概念 同步和异步 同步和异步通常来形容一次方法的调用。同步方法一旦开始,调用者必须等到方法结束才能执行后续动作;异步方法则是在调用该方法后不必等到该方法执行完就能执行后面的代码,该方法会在另一个线程异步执行,异步方法总是伴随着回调,通过回调来获得异步方法的执行结果。 并发和并行 很多人都将并 ...
分类:
编程语言 时间:
2019-08-31 12:27:48
阅读次数:
80
Java并发的学习内容主要来自《Java并发编程实战》一书,本文为一概述。 并发最简单的解释应该是不同任务的执行时间区间存在交集。由于时间上的交集+共享变量,并发会带来安全问题。 从任务的角度而言,任务的执行需要得到正确的效果;从对象的角度而言,对象需要被正确的访问。 所谓正确,或常说的线程安全,包 ...
分类:
编程语言 时间:
2019-08-29 20:26:49
阅读次数:
96
书单较为片面,仅供参考。并非每一本都推荐。 1. 《Java编程思想》 2. 《Java核心技术:卷I(第10版)》3. 《Effective Java(第2版)》4. 《Java并发编程实战》5. 《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》6. 《设计模式之禅(第2版)》7. ...
分类:
其他好文 时间:
2019-08-28 23:58:41
阅读次数:
162
一.Callable与Runnable 先说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法: 由于run()方法返回值为void类型,所以在执行完任务之后无法返回任何结果。 Callable位于java.util.concurrent包下,它也是一个接口 ...
分类:
编程语言 时间:
2019-08-19 00:18:36
阅读次数:
140
java并发编程实践 11.1ArrayBlockingQueue的使用 有关logback异步日志打印中的ArrayBlockingQueue的使用 1、异步日志打印模型概述 在高并发、高流量并且响应时间要求比较小的系统中同步打印日志在性能上已经满足不了了,这是以因为打印本身是需要写磁盘的,写磁盘 ...
分类:
编程语言 时间:
2019-08-18 17:46:36
阅读次数:
96