随笔分类 - java线程
摘要:1. 最简单通过主动的内部函数的方法捕获 2. 通过设置一个默认的UncaughtExceptionHandler来处理所有的异常 3.
阅读全文
摘要:/** * Executes the given task sometime in the future. The task * may execute in a new thread or in an existing pooled thread. * * If the task cannot be submitted for executio...
阅读全文
摘要:死锁 1.通过锁的顺序来避免死锁的发生,比如使用System.identityHashCode()排序,或者源数据中就有可比较的键值,比如账户
阅读全文
摘要:demo1: 结果: 修改代码: 在到达栅栏之后,栅栏随机选取一个线程,进行一个操作。 结果: 从结果可以看出,在到达栅栏之后,首先执行Runnable中的函数,然后再执行线程中的剩余的操作。
阅读全文
摘要:线程的礼让: 当轮到一个线程执行任务,但是这个线程处理一个不是很重要的事情的时候,可以让大家来一次抢占的机会 程序: 结果:
阅读全文
摘要:condition.await() condition.signalAll() 结果显示: 将ThreadB中改为唤起一个已经挂起的进程 将ThradA中改为每次释放锁之前唤起一个已经挂起线程 ThreadA ThreadB 结果:
阅读全文
摘要:同步器节点的waitStatus解释 CANCELLED 取消状态 SIGNAL -1 等待触发状态,前节点可能是head或者前节点为取消状态CANCELLED CONDITION -2 等待条件状态,在等待队列中 PROPAGATE -3 状态需要向后传播 //不公平锁的lock函数 static final class NonfairSync extends Sync { ...
阅读全文
摘要:结果: 修改代码: 结果: 再次修改代码将Thread.sleep(1000)注释掉 结果显示: b1尝试获得obj锁b1获得了obj锁,进入waitb2尝试获得obj锁b3尝试获得obj锁Main函数获得了锁,进行notifyAll操作b1从wait出来了b3获得了obj锁,进入waitb2获得了
阅读全文
摘要:结果: trylock() 结果: 修改代码,使用tryLock(time,TimeUnit) 结果显示:线程A获得锁,线程B和C等待锁的释放4秒钟,但是一秒钟后b被主线程中断,C在四秒钟后放弃了对锁的获取。
阅读全文
摘要:结果: 中断take()方法 结果: 再次修改中断方法: 将get空转,等待标志位的改变 结果显示: customer的run方法结束 再次修改代码: 结果: 前三秒:显示true 完了主函数请求中断消费者,消费者在死循环里面检测到中断的请求之后,将请求通过interrupted()函数,重置一下。
阅读全文
摘要:putval源码 inittable() helpTransfer() helpTransfer()
阅读全文
摘要:重要的参考博客: https://blog.csdn.net/zhaozhirongfree1111/article/details/72781758
阅读全文
摘要:将函数,变为,参数传入 1. 是一个接口,就是将一个对int类型的操作当一个参数传入进来。 关键函数:applyAsInt(int operand) 对一个参数operand进行一些操作,最后返回个int类型。 2. 在AtomicInteger中的应用 首先获取到原来的值,然后,进行一些操作,最后
阅读全文
摘要:public class PC { public static void main(String[] args) { BlockingQueue bq = new ArrayBlockingQueue(5); for(int i = 0 ;i bq; public Productor(BlockingQueue bq){ ...
阅读全文