死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 java 死锁产生的四个必要条件: 1、互斥使用,即当资源被一个线程使用(占有)时,别…
分类:java并发
Java并发之:生产者消费者问题
生产者消费者问题是Java并发中的常见问题之一,在实现时,一般可以考虑使用juc包下的BlockingQueue接口,至于具体使用哪个类,则就需要根据具体的使用场景具体分析了。本文主要实现一个生产者消费者的原型,以及实现…
【JDK1.8】JUC.Lock综述
一、前言 前段时间结束了jdk1.8集合框架的源码阅读,在过年的这段时间里,一直在准备JUC(java.util.concurrent)的源码阅读。平时接触的并发场景开发并不很多,但是有网络的地方,就存在并发,所以想找几…
【转】JAVA处理线程超时
在实际业务中,由其是多线程并开业务中,经常会遇到某个线程执行超时。而程序如果不捕获这类情况,就会导致程序一直处于等待状态,从而影响后续线程的运行。比如说网络通迅、单任务下的复杂数据库查询等,通常处理这类问题,可以启用一个…
java中多线程的线程同步死锁问题
/* *定义一个多线程 */ package com.thread; public class TicketThread2 implements Runnable { //定义1000张票 public static i…
用Java原子变量的CAS方法实现一个自旋锁
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。 http://www.cnblogs.com/shijiaqi1066/p/5999610.html …
Java中有哪些锁,区别是什么
【1】公平所和非公平所。 公平锁:是指按照申请锁的顺序来获取锁, 非公平所:线程获取锁的顺序不一定按照申请锁的顺序来的。 //默认是不公平锁,传入true为公平锁,否则为非公平锁 ReentrantLock reentr…
JUC源码分析25-队列-LinkedTransferQueue
原理 TransferQueue LinkedTransferQueue结构-Node Node节点 Node节点源码 LinkedTransferQueue结构源码 核心方法 put-offer-add untimed…
java 同步锁方法
方法一:动态同步锁 class Demo_thread implements Runnable{ public static int sum = 0; public synchronized void add(){//同…
Java多线程--重入锁的实现原理
ReentrantLock 是一种支持支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁,除此之外,该锁还支持获取锁的公平性和非公平性选择。 1 重入的实现 对于锁的重入,我们来想这样一个场景。当一个…
Java并发编程笔记之Unsafe类和LockSupport类源码分析
一.Unsafe类的源码分析 JDK的rt.jar包中的Unsafe类提供了硬件级别的原子操作,Unsafe里面的方法都是native方法,通过使用JNI的方式来访问本地C++实现库。 rt.jar 中 Unsafe 类…
Java线程池——ThreadPoolExecutor的使用
1 线程池的创建 ThreadPoolExecutor有以下四个构造方法 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize…