小小默:进无止境

QQ:1274654983 欢迎交流~~

排序:
默认
按更新时间
按访问量
RSS订阅

线程间通信之Object.wait/notify实现

核心有这样几个关键字:锁,monitor以及指令。PS:遇到面试官问的问题不是你曾经考虑的问题不要怕,不要紧张。可能只是说法变了,但是知识还是哪些知识! waiting… ...

2019-02-16 21:59:22

阅读数 111

评论数 0

进程间通信和线程间通信总结

写在前面 面试的时候一定不要疲劳战,比如上午面了一个,然后中午不休息直接赶到另外一个相距比较远的公司,影响状态。 面试的时候一定不要紧张,不管对方有几个人,总之面试的时候做好充分准备,休息好,放松心态。 好了,言归正传,开始总结。 【1】进程间通信方式 进程间通信又称IPC(Inter-Proce...

2019-02-16 16:06:57

阅读数 202

评论数 0

认真学习Java中线程实现和调度

并发不一定要依赖多线程(如PHP中很常见的多进程并发),但是在Java里面谈论并发,大多数与线程脱不开关系。线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度(线程是CPU调度的基本单位)。 ...

2019-02-03 18:53:32

阅读数 114

评论数 0

深入学习线程局部变量ThreadLocal

ThreadLocal是线程局部变量,和普通变量的不同在于:每个线程持有这个变量的一个副本,可以独立修改(set方法)和访问(get方法)这个变量,并且线程之间不会发生冲突。 类中定义的ThreadLocal实例一般会被private static修饰,这样可以让ThreadLocal实例的状态和...

2019-01-29 15:45:42

阅读数 135

评论数 0

一文读懂Synchronized的实现原理

在多线程并发编程中 Synchronized 一直是元老级角色,很多人都会称呼它为重量级锁,但是随着 Java SE1.6 对 Synchronized 进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了 Java SE1.6 中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级...

2019-01-14 22:07:02

阅读数 190

评论数 0

多线程并发之Semaphore(信号量)使用详解

专题相关文章: 从内存可见性看Volatile、原子变量和CAS算法 多线程并发之CountDownLatch(闭锁)使用详解 多线程并发之显示锁Lock与其通信方式Condition源码解读 多线程并发之读写锁(ReentranReadWriteLock&...

2019-01-02 17:04:03

阅读数 1326

评论数 0

多线程并发之volatile的底层实现原理

上篇博文从内存可见性看Volatile、原子变量和CAS算法提到了volatile保证内存可见性和CAS算法。本篇博文着重学习volatile的底层实现原理。 【1】回顾volatile volatile相当于是轻量级的synchronized。如果一个变量使用volatile,则它比使用sync...

2018-12-28 10:29:53

阅读数 297

评论数 0

多线程并发之CyclicBarrier(栅栏)使用详解

【1】CyclicBarrier简介 CyclicBarrier,是JDK1.5的java.util.concurrent并发包中提供的一个并发工具类。翻译为中文为“篱栅”意思,也就是栅栏。 ① Javadoc CyclicBarrier是一个同步辅助类,它允许一组线程相互等待直到所有线程都到达一...

2018-12-26 14:44:09

阅读数 543

评论数 0

队列同步器AQS-AbstractQueuedSynchronizer 原理分析

【1】AQS 简单介绍 AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面。 其是AbstractOwnableSynchronizer的子类: AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效...

2018-12-06 11:12:15

阅读数 289

评论数 0

JUC 中的 Atomic 原子类总结

继该篇博文从内存可见性看Volatile、原子变量和CAS算法后继续学习JUC中的原子类。 【1】原子类概述 Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行...

2018-12-05 16:42:57

阅读数 250

评论数 0

多线程并发之线程池Executor与Fork/Join框架

【1】常见接口和实现类 ① 什么是线程池 首先可以联想一下数据库连接池,Redis中的pool。 线程池提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。 ② 常见的体系结构 常见的线程池体系结构: java.util.concurr...

2018-09-28 19:16:22

阅读数 500

评论数 0

多线程并发之读写锁(ReentranReadWriteLock&ReadWriteLock)使用详解

【1】基本讲解与使用 ReadWriteLock同Lock一样也是一个接口,提供了readLock和writeLock两种锁的操作机制,一个资源可以被多个线程同时读,或者被一个线程写,但是不能同时存在读和写线程。 使用场景 假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那...

2018-09-20 16:56:41

阅读数 6099

评论数 2

线程间通信实例之轮流打印ABC

需求一,三个线程轮流打印ABC,每个线程打印十次,ABC分别为线程名字 效果如下: A A A A A A A A A A //BC依次排列 使用synchronized、wait、notifyAll实例代码如下: public class Te...

2018-09-17 17:13:04

阅读数 116

评论数 0

多线程并发之显示锁Lock与其通信方式Condition源码解读

【1】显示锁和隐式锁 在Java 5.0 之前,协调共享对象的访问时可以使用的机制只有synchronized 和volatile 。Java 5.0 后增加了一些新的机制,但并不是一种替代内置锁的方法,而是当内置锁不适用时,作为一种可选择的高级功能。即,显示锁(同步锁)-Lock。 ...

2018-09-16 16:33:18

阅读数 679

评论数 0

多线程创建方式三 - 实现Callable接口

Java 5.0 在java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口。 Callable 接口类似于Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是Runnable 不会返回结果,并且无法抛出经过检查的异常。 Call...

2018-09-16 15:46:16

阅读数 114

评论数 0

多线程并发之CountDownLatch(闭锁)使用详解

【1】CountDownLatch是什么 CountDownLatch,英文翻译为倒计时锁存器。是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完成才继续执行: ...

2018-09-16 11:24:52

阅读数 803

评论数 0

浅谈从fail-fast机制到CopyOnWriteArrayList使用

在ArrayList、HashMap和HashSet等集合的Javadoc中,你会看到类似如下注释: 图片来源于ArrayList的javadoc 第一段翻译如下: waiting..

2018-09-13 18:00:17

阅读数 231

评论数 1

多线程时Autowired自动注入问题

首先需要知道的是,容器中的组件,也就是你添加了诸如@Component , @Service , @Controller以及@Repository等等注解,在容器启动的时候是会扫描标注这些注解的类创建bean并放入容器中。 如果该类中的成员变量上使用了诸如@Autowired和@Resource...

2018-07-12 12:29:01

阅读数 2804

评论数 0

多线程循环交替输出1-100【extends Thread】

//线程通信。如下的三个关键字使用的话,都得在同步代码块或同步方法中。 //wait():一旦一个线程执行到wait(),就释放当前的锁。 //notify()/notifyAll():唤醒wait的一个或所有的线程 //使用两个线程打印 1-100. 线程1, 线程2 交替打印class Pri...

2016-11-01 23:36:02

阅读数 1432

评论数 0

从内存可见性看Volatile、原子变量和CAS算法

内存可见性(Memory Visibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。 那么如果一个线程修改了对象状态,其他线程看不到对象的状态变化怎么办?就会引起内存可见性错误!

2016-10-18 08:45:06

阅读数 2808

评论数 0

提示
确定要删除当前文章?
取消 删除