同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。 异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。 而异步方法通常会在另外一个线程中“ ...
分类:
编程语言 时间:
2019-07-08 00:04:24
阅读次数:
138
1.volatile仅能使用在变量级别,synchronized则可以使用在变量、方法、类级别上。 2.volatile仅仅能实现变量修改可见性,并不能保证原子性,synchronized可以实现变量的修改可见性和原子性。 3.volatile不会造成线程阻塞,synchronized可能会造成线程 ...
分类:
其他好文 时间:
2019-06-26 10:55:06
阅读次数:
116
JUC包下的ReentrantLock是基于Aqs模板实现的,它区分公平锁和非公平锁,内部实现了两个同步器,本文关注非公平锁部分。 伪代码 我们先看两个伪代码: 1、获取锁 我们看到,如果一次获取成功则结束,如果没有获取成功将进入循环中,并且当前线程阻塞直到被唤醒并且获取到锁才结束。 2、释放锁 释 ...
分类:
其他好文 时间:
2019-06-17 01:15:02
阅读次数:
175
1.使用Runtime中exec(String command)方法执行cmd命令,如下: 此方法会抛出IOException,但是在项目中遇到没有出现异常,命令也没有执行的情况。 2.此方法可以达到大多的cmd调用的期望结果,但有些时候回出现命令卡死在p.waitFor();上,造成线程阻塞,原因 ...
分类:
编程语言 时间:
2019-06-14 14:42:51
阅读次数:
126
问题描述: 最近已经有两个项目因为日志打印问题而引发了故障,可以说是血的教训了。两次故障的原因也是非常的相似,都是由于其他业务系统调用了另外一个老系统的接口,但是由于传递的参数不正确,而老系统会因为参数不正确而打印日志。当错误的请求量增大,打印日志会造成当前线程阻塞,容易使机器机器负载升高,产生性能 ...
分类:
其他好文 时间:
2019-06-06 22:56:34
阅读次数:
134
AQS是一个抽象类,提供了一套通用的控制同步状态,线程阻塞/唤醒,等待队列管理的操作。
分类:
编程语言 时间:
2019-06-06 15:53:55
阅读次数:
133
一、线程池实现原理 1. 管理者线程 (1)计算线程不够用 创建线程 (2) 空闲线程太多 a. 销毁 更新要销毁的线程个数 通过条件变量完成的 b. 如果空闲太多,任务不够 线程阻塞在该条件变量上 c. 发送信号 pthread_cond_signal 2. 线程池中的线程 (1)从任务队列中取数 ...
分类:
编程语言 时间:
2019-05-25 19:44:47
阅读次数:
149
代码如下 在上面红色代码出设置一个断点,发现只有"Point 1"这条消息输出了,"Point 2" 这条消息没有输出 ...
分类:
编程语言 时间:
2019-05-12 21:19:54
阅读次数:
167
悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的
分类:
其他好文 时间:
2019-04-27 00:21:11
阅读次数:
186
js单线程阻塞实例setTimeout(function () { while (true) { } }, 1000);setTimeout(function () { alert('end 2'); }, 2000);setTimeout(function () { alert('end 1'); ...
分类:
编程语言 时间:
2019-04-24 18:58:14
阅读次数:
122