并发编程
皮皮go
无问西东
展开
-
死锁及其解决办法
目录死锁的定义死锁代码演示如何避免死锁参考文献死锁的定义由于两个或者多个线程相互持有对方所需要的资源,导致这些线程处于相互等待状态,使得每一个线程都无法执行下去。死锁代码演示package lock;public class DeadLock { public static void main(String[] args) { de...原创 2019-05-20 16:55:40 · 453 阅读 · 0 评论 -
两个线程交替打印奇偶
要求描述两个线程,其中一个线程打印奇数,另外一个线程打印偶数。两个线程交替打印,输入1,2,3,...,100基本思路利用通知等待机制,第一个线程打印后,然后唤醒第二个线程,并释放锁。第二个线程执行同样的操作代码实现package basicKnowledge.thread;import java.util.concurrent.atomic.AtomicInt...原创 2019-09-26 10:09:56 · 610 阅读 · 0 评论 -
JVM中的各种锁及其优化
1 自旋锁与自适应自旋自旋锁:如果两个或以上的线程能够并行执行,我们可以让请求锁的线程稍等一下,但不放弃CPU的执行时间,看看持有锁的线程是否很快释放锁。为了让线程等待,我们只需让线程执行一个忙循环(自旋),这项技术就是所谓的自旋锁。开启参数:-XX:+UseSpinning 自旋次数:-XX:PreBlockSpin 自旋锁对处理器有要求,因为它需要处理器能够支持多线程并行(注...原创 2019-09-05 21:41:27 · 636 阅读 · 0 评论 -
线程间通信
1 通知/等待机制package concurrent.communication;import java.text.SimpleDateFormat;import java.util.Date;/** * @基本功能:通知等待机制 * @program:summary * @author:peicc * @create:2019-09-03 15:36:41 **/p...原创 2019-09-03 16:35:00 · 96 阅读 · 0 评论 -
Synchronized的底层实现原理
synchronized实现同步的基础Java中的每一个对象都可以作为锁,具体表现为以下形式: 对于普通方法,锁的是当前实例对象 对于静态方法,锁的是当前类的Class对象 对于代码块,锁的是Synchonized括号里配置的对象 当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。那么锁到底存在哪里呢?锁里面会存储什么信息呢...原创 2019-05-18 18:58:50 · 183 阅读 · 0 评论 -
Java集合之fail-fast
1 fail-fast简介fail-fast是java集合(Collection)的一种错误机制 当多个线程对同一个集合的内容进行操作时,就可能产生fail-fast事件2 代码测试package basicKnowledge.集合框架.arrayList;import java.util.ArrayList;import java.util.Iterator;/*...原创 2019-07-19 16:42:11 · 183 阅读 · 0 评论 -
线程安全
1、什么是线程安全?当多个线程访问一个对象时,如果不用考虑这些线程的访问方式和如何进行交替执行,主程序中也不需要进行额外的同步,调用这个对象都能获得正确的结果,那么这个对象是线程安全的。2、线程不安全代码开启三个线程,每个线程循环10次。package thread;public class ThreadSafe { private static int cou...原创 2019-07-01 21:34:03 · 1258 阅读 · 1 评论 -
基于线程池技术的简单web服务器
1.首先实现一个线程池1.1线程池接口package threadpool;public interface ThreadPool<Job extends Runnable> { //执行一个job void execute(Job job); //关闭线程池 void shutdown(); //增加工作者线程 void ...原创 2019-05-27 16:22:12 · 285 阅读 · 0 评论 -
Java线程
线程的状态Java中的线程在其生命周期中一共有六种不同的状态,但在给定的某一时刻,线程只能处于其中的一个状态。Java线程状态变化过程参考文献《并发编程的艺术》...原创 2019-09-26 16:47:11 · 65 阅读 · 0 评论 -
volatile关键字
java语言中volatile关键字原创 2019-05-20 20:26:21 · 62 阅读 · 0 评论 -
公平锁与非公平锁及其测试
公平锁与非公平锁公平锁:获取锁的先后顺序与请求锁的先后顺序保持一致,具有FIFO特点。非公平锁:反之则为非公平锁。什么是可重入?同一个线程重复多次获取同一把锁,释放的时候也需要释放多次。Java中锁的特点 synchronized:可重入,非公平(不可设置)。锁的是Object对象 ReentrantLock:可重入,公平或非公平(可设置)。通过获取...原创 2019-10-08 16:28:54 · 370 阅读 · 0 评论