
多线程
IronWring_Fly
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Synchronized和Lock
参考文章: 详解synchronized与Lock的区别与使用 锁的种类 可重入锁 可中断锁 读写锁 公平锁 Synchronized 和 local 的区别 类别 synchronized Lock 存在层次 Java关键字,JVM层面 是一个类 锁的释放 1. 以获得锁的线程执行万同步代码,释放锁。2. 线程执行发生异常,jvm会让线程释放锁。 在fin...原创 2019-10-16 10:59:20 · 192 阅读 · 0 评论 -
如何使用线程池
线程池的使用 ExecutorService service = Executors.newSingleThreadExecutor(); ExecutorService service1 = Executors.newCachedThreadPool(); ExecutorService service2 = Executors.newFixedT...原创 2019-10-16 10:04:05 · 259 阅读 · 0 评论 -
Java的四种线程池
线程池的作用 限制系统中执行线程的数量 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列中取出最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了,否则进入等待队列。 为什么要用线程...原创 2019-10-15 11:07:53 · 177 阅读 · 1 评论 -
ConcurrentHashMap
ConcurrentHashMap中有三个层次,整个Hash表,Segment,HashEntry。 Segment数组中的每一个Segment就相当于是一个HashTable,每个HashEntry代表Hash表中的一个节点。HashEntry类如下: 除了value定义为volatile之外,其余都定义为final。 Segment继承自ReentrantLoc...原创 2019-10-15 08:20:15 · 184 阅读 · 0 评论 -
可重入锁和不可重入锁
可重入锁就是可以循环迭代使用的锁,不会产生死锁的现象,典型的就是Synchronized和Reentrantlock。 不可重入锁循环迭代使用则有产生死锁的风险。 // 可重入锁 class ReentrantTest implements Runnable{ public synchronized void get(){ System.out.println(Thread...原创 2019-10-14 21:44:09 · 363 阅读 · 0 评论 -
Java实现生产者消费者的三种方法
java实现生产者消费者问题 https://www.cnblogs.com/happyPawPaw/archive/2013/01/18/2865957.html 生产者消费者,就是一个生产者线程,一个消费者线程,对同一块资源进行访问,但是两个线程不能同时访问该资源,必须得生产者生产完数据,并将其放入这个资源块之后,消费者才来访问这块资源,当消费者消费完这块资源,生产者才能开始访问这块资源,...原创 2019-09-10 21:48:54 · 259 阅读 · 0 评论 -
线程安全的单例模式
遇到一个笔试题,要求写出高效的线程安全的单例模式,当时只记得懒汉式,饿汉式,没有留意多线程与性能的问题,这里特地找了资料,记录下来。 静态工程方法: public class Test{ private Test(){} private static class TestHolder{ private static Test instance = new Tes...原创 2019-10-11 10:18:39 · 140 阅读 · 0 评论