java并发
java并发
haikuotiankongdong
这个作者很懒,什么都没留下…
展开
-
ThreadLocal 详解
ThreadLocal 有什么缺陷ThreadLocal 有什么缺陷原创 2020-10-24 13:44:46 · 337 阅读 · 0 评论 -
有序打印线程
有序打印线程1、使用Thread.join()方法thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程Bpublic class ThreadTest1 { public static void main(String[] args) { Thread t1 = new Thread(new Work(null)); Thread t2原创 2020-09-16 09:14:26 · 104 阅读 · 0 评论 -
如何设计一个高并发系统架构
如何设计一个高并发系统架构https://blog.csdn.net/admin19921022/article/details/90599155原创 2020-05-13 00:36:47 · 167 阅读 · 0 评论 -
如何设计一个秒杀系统
如何设计一个秒杀系统1 什么是秒杀秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。2 秒杀系统场景特点秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。 秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成功...原创 2020-05-13 00:35:36 · 237 阅读 · 0 评论 -
Java创建线程有几种方式?
Java创建线程有几种方式?Java 创建线程有两种方式:1. 继承Thread类,并重写run()方法2. 实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Threadpublic static void main(String[] args) { // 第一种 MyThread myThread = new MyThread(); myThread.start(); ...原创 2020-05-12 22:31:37 · 614 阅读 · 0 评论 -
ConcurrentHashMap17 1.8
ConcurrentHashMap17 1.8原创 2020-04-11 00:24:01 · 132 阅读 · 0 评论 -
java并发编程实战
ThreadLocal就是这么简单一、什么是ThreadLocal首先我们来看一下JDK的文档介绍:/** * This class provides thread-local variables. These variables differ from * their normal counterparts in that ...原创 2020-04-05 11:08:16 · 3571 阅读 · 0 评论 -
Synchronize锁优化手段有哪些
Synchronize锁优化手段有哪些synchronized锁在jdk1.6以后会有各种的优化:适应自旋锁,锁消除,锁粗化,轻量级锁,偏向锁。适应自旋锁锁竞争是kernal mode下的,会经过user mode(用户态)到kernal mode(内核态) 的切换,是比较花时间的。自旋锁出现的原因是人们发现大多数时候锁的占...原创 2020-04-04 12:10:01 · 260 阅读 · 0 评论 -
Java线程池实现原理---美团技术栈
Java线程池实现原理---美团技术栈随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。线程池是什么线程池(Thre...原创 2020-04-04 22:11:12 · 819 阅读 · 0 评论 -
lambda箭头函数 线程创建
lambda箭头函数// Java 8之前:new Thread(new Runnable() { @Override public void run() { System.out.println("Before Java8"); }}).start();new Thread(...原创 2020-03-30 18:28:39 · 1190 阅读 · 0 评论 -
线程池详解
线程池详解https://blog.csdn.net/weixin_41563161/article/details/104889470https://blog.csdn.net/weixin_41563161/article/details/103666165线程池,即管理着若干线程的资源池(字面...原创 2020-03-28 21:51:32 · 281 阅读 · 0 评论 -
实现线程同步的几种方式总结
实现线程同步的几种方式总结在多线程中线程的执行顺序是依靠哪个线程先获得到CUP的执行权谁就先执行,虽然说可以通过线程的优先权进行设置,但是他只是获取CUP执行权的概率高点,但是也不一定必须先执行。在这种情况下如何保证线程按照一定的顺序进行执行,今天就来一个大总结,分别介绍一下几种方式。1 通过Object的wait和notif...原创 2020-03-19 12:23:33 · 372 阅读 · 0 评论 -
多线程还是多进程的选择及区别
多线程还是多进程的选择及区别关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永...原创 2020-03-19 00:26:25 · 179 阅读 · 0 评论 -
核心线程是如何被重复利用的?
核心线程是如何被重复利用的?在Java开发中,经常需要创建线程去执行一些任务,实现起来也非常方便,但如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。此时,我们很自然会想到使用线程池来解决这个问题。使用线程池的好处:1 降低资源消耗。jav...原创 2020-03-18 23:53:45 · 215 阅读 · 0 评论 -
线程池关闭以及状态
线程池关闭以及状态线程池的状态线程池状态.png从上图我们看到线程池总共存在 5 种状态,分别为:RUNNING:线程池创建之后的初始状态,这种状态下可以执行任务。SHUTDOWN:该状态下线程池不再接受新任务,但是会将工作队列中的任务执行结束。STOP: 该状态下线程池不再接受新任务,但是不会处理工作...原创 2020-03-15 23:36:56 · 369 阅读 · 0 评论 -
自旋锁原理
自旋锁原理如果持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入阻塞挂起状态,它们只需要等一等(自旋),等持有锁的线程释放锁后即可立即获取锁,这样就避免用户线程和内核的切换的消耗。线程自旋是需要消耗cup的,说白了就是让cup在做无用功,如果一直获取...原创 2020-03-12 12:23:53 · 496 阅读 · 0 评论 -
Callable和Future的使用
Callable和Future的使用通常我们创建线程使用newThread 和实现Runnable接口,但是这两种方式有一个缺陷,就是不能返回线程执行的结果,Doug lea又给我们提供了另一种方式,实现Callable接口,Callable只有一个方法,它是有返回值的,也可以抛出异常,它的执行结果可以被Future拿到。...原创 2020-03-12 11:14:09 · 195 阅读 · 0 评论 -
hashmap底层实现
hashmap底层实现/** * @Auther: liuhaidong * Data: 2020/3/6 0006、23:53 * Description: * @version: 1.0 */public class Test { public class MyHashMap<K, V&g...原创 2020-03-07 00:47:56 · 250 阅读 · 0 评论 -
Lock实现原理
Lock实现原理Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.u...原创 2020-03-05 12:22:58 · 894 阅读 · 0 评论 -
java 多线程 四个窗口卖100张票(升级版)4个线程一起卖 1000张票,每卖出100张。票价涨100
java 多线程 四个窗口卖100张票public class IOTest { public static void main(String[] args) { TicketSell t1 = new TicketSell(); TicketSell t2 = new TicketSell(...原创 2020-03-02 18:30:47 · 2034 阅读 · 0 评论 -
线程间通信(循环打印abc)
线程间通信wait/notify/notify Allpublic class Test77 { public static class ThreadPrinter implements Runnable { private String name; private Obj...原创 2020-03-02 18:10:18 · 359 阅读 · 2 评论 -
强一致性、顺序一致性、弱一致性和共识
强一致性、顺序一致性、弱一致性和共识提到分布式架构就一定绕不开“一致性”问题,而“一致性”其实又包含了数据一致性和事务一致性两种情况,本文主要讨论数据一致性(事务一致性指ACID)复制是导致出现数据一致性问题的唯一原因。如果只用一台数据库来处理所有的写入和读取请求,就一定不存在数据一致性的问题。 但在中大型项目中,我们却经常需要将一份数据存储在超过...原创 2020-02-06 00:13:47 · 1207 阅读 · 0 评论 -
HashMap、Hashtable、ConcurrentHashMap的原理与区别
HashMap、Hashtable、ConcurrentHashMap的原理与区别内推军P22HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算i...原创 2020-02-06 00:05:32 · 237 阅读 · 0 评论 -
i++ 是线程安全的吗?
i++ 是线程安全的吗?(是否具有原子性)不是!(经典的内存不可见问题)本文参考https://mp.weixin.qq.com/s/7H9n2DLZOaANTch72ln5ww本文参考https://www.jianshu.com/p/0be2689550e7"原子操作(atomic operation)是不需要synchronized",答案是否定的,i++和++i都不具有原子性...原创 2020-01-22 08:37:34 · 4561 阅读 · 0 评论 -
线程安全问题出现的原因和解决方法
线程安全问题出现的原因和解决方法线程安全问题出现的根本原因: 1. 必须要存在两个或者两个以上的线程共享着一个资源。 2. 操作共享资源的代码必须有两句或者两句以上。线程安全问题的解决方案(2个):解决思路:就是将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候,其他线程是不可以参与运算的。必...原创 2020-01-08 11:57:04 · 717 阅读 · 0 评论 -
java基础--java多线程
多线程目录 多线程1什么是线程线程的调度与控制2 并行并发区别3 JVM的启动是多线程的吗线程状态转换1线程状态转换2线程调度4多线程实现的方式创建线程方法1创建线程方法25...原创 2019-10-24 12:18:00 · 801 阅读 · 0 评论 -
java基础---多线程知识点
目录1、多线程有什么用?2、创建线程的方式3、start()方法和run()方法的区别4、Runnable接口和Callable接口的区别5、CyclicBarrier和CountDownLatch的区别6、volatile关键字的作用7、什么是线程安全8、Java中如何获取到线程dump文件9、一个线程如果出现了运行时异常会怎么样10、如何在两个线程之间共...原创 2019-10-24 14:56:22 · 1883 阅读 · 0 评论 -
线程池
线程池1简介线程池是啥子,干啥使它呀,老子线程使得好好的,非得多次一举,哈哈,想必来这里看这篇文章的都对线程池有点了解。那么我来整理整理线程池的好处吧。1、线程池的重用线程的创建和销毁的开销是巨大的,而通过线程池的重用大大减少了这些不必要的开销,当然既然少了这么多消费内存的...原创 2019-12-23 15:31:54 · 232 阅读 · 0 评论 -
java.util.Concurrent包下面的常见类
java.util.Concurrent包下面的常见类1BlockingQueue(1)阻塞队列 BlockingQueue简介java.util.concurrent 包里的 BlockingQueue 接口表示一个线程安放入和提取实例的队列。本节不会讨论如何在 Java 中实现一个你自己的 BlockingQueue。如果你对那...原创 2020-02-03 23:16:12 · 1731 阅读 · 0 评论 -
线程安全的方式,每一种方式的特点
线程安全的方式,每一种方式的特点在操作系统中,线程是不拥有资源的,进程是拥有资源的。而线程是由进程创建的,一个进程可以创建多个线程,这些线程共享着进程中的资源。所以,当线程一起并发运行时,同时对一个数据进行修改,就可能会造成数据的不一致性,多个线程共享同一个全局变量或静态变量,多个线程同时读数据不会发生数据安全性问题,但是有一个线程对数据...原创 2020-02-03 23:18:03 · 300 阅读 · 0 评论 -
synchronized原理以及锁优化
synchronized原理以及锁优化https://blog.csdn.net/weixin_41563161/article/details/103869694https://blog.csdn.net/weixin_41563161/article/details/1024582971概述synchroni...原创 2020-02-03 16:26:14 · 227 阅读 · 0 评论 -
乐观锁与悲观锁
乐观锁与悲观锁何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数...原创 2020-01-07 15:16:26 · 248 阅读 · 0 评论 -
lock ,sychronized,volatile的区别
lock ,sychronized,volatile的区别p34 p77 p124 (内推军书)https://blog.csdn.net/weixin_41563161/article/details/102458297重量级锁、自旋锁、轻量级锁、偏向锁、悲观、乐观锁等各种锁https://blog.csdn.net/weixin_41...原创 2020-01-07 10:35:41 · 576 阅读 · 0 评论 -
java原理--Map 如何实现Key 的唯一性?
Map 如何实现Key 的唯一性?在Map和Set不可存在重复元素?1对于 HashMap HashSet 他们的底层数据结构的实现是:维护了一张 HashTable 。容器中的元素全部存储在Hashtable 中。他们再添加元素的时候,是如何判断是否存在有重复元素的呢? 每一个被添加的元素都有一个 hashCode(哈希值...原创 2019-10-21 19:52:16 · 2446 阅读 · 0 评论 -
java基础--java中HashMap原理
java中HashMap原理内推军P21 P221、为什么用HashMap?HashMap是一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射HashMap采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改HashMap是非synchronized,所以Ha...原创 2019-10-21 11:04:20 · 1009 阅读 · 0 评论