胃病的不良少彦

http://www.neuqhcg.cn 个人写博客主要是方便日后自己查看学过的东西,算是做个笔记并督促自己学习,可能有些粗陋或者肤浅,请见谅!同时给自己定下一个目标:2019要不断的学习提升自己,...

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

Java 手写一个死锁

其实死锁很好理解,比如一个人要进入两个房间,但是这两个房间都是每次只能进入一个人,而且还是只能等里面的人办完事之后才能有另一个人进入 转化为多线程就是: 1.给这两个房间加一个class锁 2. 让一个人张三在房间A的时候尝试获取房间B的锁 3. 让李四在房间B的时候,尝试获取A的锁 4...

2019-03-21 17:19:27

阅读数 66

评论数 0

什么是Java虚假唤醒及如何避免虚假唤醒?《多线程学习之十四》

那什么是假唤醒? 当一个条件满足时,很多线程都被唤醒了,但是只有其中部分是有用的唤醒,其它的唤醒都是无用功 1.比如说买货,如果商品本来没有货物,突然进了一件商品,这是所有的线程都被唤醒了 ,但是只能一个人买,所以其他人都是假唤醒,获取不到对象的锁 避免虚假唤醒 下面是避免虚假唤醒的示例: p...

2019-02-12 17:35:02

阅读数 174

评论数 0

为什么要用CountDownLatch?《十三》

CountDownLatch并发类的用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。 比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 比如下面的代码是让额...

2019-02-12 17:32:12

阅读数 246

评论数 0

单例模式线程安全吗《十二》

单例模式线程安全吗? 单例模式作为一种常见的设计模式,在程序中非常常见,主要是为了保证一个类只有一个唯一的对象。 从简单的“饿汉式”、“懒汉式”→利用 synchronized 和 复杂的“双重校验DCL模式”,是一个考虑线程安全的过程 那么单例模式线程安全吗 1. 静态的饿汉式单例模式是线程...

2019-01-30 12:07:46

阅读数 77

评论数 0

多线程之读写锁ReadWriteLock的深度理解及用读写锁实现缓存《十》

读写锁 1. 为什么要引入读写锁? 1. 重入锁是一个时刻只能一个线程访问,读写锁同一个时刻允许多个线程访问 2. 但是在写线程访问时,所有的读线程和其他写线程均被阻塞 3. 读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁, 通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大...

2019-01-25 17:46:10

阅读数 80

评论数 0

多线程之重入锁锁ReentrantLock的深度理解《九》

1. 重入锁ReentrantLock 顾名思义,就是支持重进入的锁,它表示该锁能够支持一个线程对 资源的重复加锁。除此之外,该锁的还支持获取锁时的公平和非公平性选择 这里提到一个锁获取的公平性问题,如果在绝对时间上,先对锁进行获取的请求一定先 被满足,那么这个锁是公平的,反之,是不公平的。公平...

2019-01-25 17:44:34

阅读数 57

评论数 0

四种方式实现2个线程交互打印从1到100的奇偶数《八》

1. 利用volatile状态标志实现(自己写的,哈哈) package duoxiancheng.print; public class PrintBai { /* 1. 任务:两个线程交替的打印从1到100里面的奇数和偶数 2. 但是你如果查看打印结果...

2019-01-24 22:52:48

阅读数 242

评论数 0

多线程学习之静态内部类实现单例模式《七》

package duoxiancheng.single.neibulei; public class ClassMonitor { /* //1. 如果在懒汉单例模式里面添加一个它的全局属性 //2. 如果想获取它的yourClass 可以调用直接调用yourClass /...

2019-01-24 22:44:39

阅读数 68

评论数 0

多线程学习之ConcurrentHashMap的原理《六》

(1)线程不安全的HashMap 在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所 以在并发情况下不能使用HashMap。例如,执行以下代码会引起死循环。 2. HashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap...

2019-01-24 22:42:04

阅读数 48

评论数 0

多线程学习之synchronized的理解、synchronized锁的到底是什么《五》

synchronized的缺陷: 1. 当某个线程进入同步方法获得对象锁,那么其他线程访问这里对象的同步方法时,必须等待或者阻塞,这对高并发的系统是致命的,这很容易导致系统的崩溃。如果某个线程在同步方法里面发生了死循环,那么它就永远不会释放这个对象锁,那么其他线程就要永远的等待。这是一个致命的问题...

2019-01-24 22:29:50

阅读数 44

评论数 0

多线程安全之饿汉单例模式《四》

/* 1. 最简单的恶汉单例模式 2. 也不会存在线程安全问题 3. 但是为什么有时候不使用这个呢? 4. 因为它不像懒汉模式是延迟加载,所谓延迟加载就说需要使用的时候才创建 5. 其实还有一点为什么大部分...

2019-01-24 22:23:19

阅读数 28

评论数 0

多线程安全之懒汉单例模式《三》

package com.pf.org.cms.single.lanhan; public class Monitor { /* 1. 最简单的单利模式 2. 将构造方法私有化,这样是防止在其他地方被实例化,就出现多个班长对象了 3. 最后给外界提...

2019-01-24 22:21:59

阅读数 35

评论数 0

多线程学习之线程中断、线程通信、线程锁《二》

1. LOCK 锁 它提供了与synchronized关键字类似的同步功 能,只是在使用时需要显式地获取和释放锁。虽然它缺少了(通过synchronized块或者方法所提 供的)隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的可操作性、可中断的获取锁以 及超时获取锁等多种synchronized...

2019-01-24 21:48:41

阅读数 55

评论数 0

多线程学习之线程的创建、线程执行顺序、循环创建线程《一》

1. 线程创建 //1. 重写run()方法创建一个线程 Thread thread1 = new Thread(new Runnable() { @Override public void run() { Syst...

2019-01-24 21:28:34

阅读数 63

评论数 0

i++线程安全吗,如何让i++线程安全

1. i++线程安全吗 1.1把数据直接放到类里面 @Controller public class A{ private int value =0; @ApiOperation(value = "i++是否线程安全测试接口&quo...

2019-01-24 21:18:09

阅读数 215

评论数 1

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