
多线程
張義帥
喜欢交朋友大家一起交流一下呢~
展开
-
线程-CAS操作
线程-CAS操作CAS是什么?compare and swap,比较and交换。为什么会有CAS呢?synchronize,是悲观锁。多少耗费一点性能。悲观锁是"总有刁民想害朕",先持有锁,然后再去执行后面的逻辑。如果逻辑贼耗时的话,会产生死锁。乐观锁是先去执行,然后去判断。CAS就是乐观锁。底层实现:利用了现代处理器都支持CAS命令。循环这个指令只到成功为止。什么是ABA问题...原创 2020-03-22 21:25:59 · 144 阅读 · 0 评论 -
线程-常见的工具类
线程-常见工具类一.cyclicbarrier,循环屏障。所有线程互相等待,都处理完了,然后在一起去执行下面的动作。注意点:1).构造函数的里面的递减数量必须和线程的数量一致。而CountDownLatch里面的递减数量必须必线程的数量大。2).cyclicbarrier里面的await可以复用,CountDownLatch到0就结束了,开始执行下面的动作。3).cyclicbarri...原创 2020-03-22 21:12:01 · 480 阅读 · 0 评论 -
java8线程方面新特性
java8->线程方面的新特性LongAdder 在高并发的场景下比AtomicLong,具有更高的性能代价是消耗更多的内存空间AtomicLong是利用cas操作,在高并发场景下,会出现大量失败并不断自旋的情况longAdder基本思路就是分散热点,其内部有一个base变量,和cell[]数组base变量:非竞争条件下,直接累加到该变量cell[]数组:竞态条件下,累加各个线程...原创 2020-04-20 16:41:48 · 319 阅读 · 0 评论 -
线程中的高逼格词汇
final的内存语意是什么呢?可以保证构造方法初始化完之后在继续往下进行也是防止重排序,java的内存模型锁的内存语意?当线程释放锁的时候,JVM会把该线程对应的本地内存中的共享变量刷新到主内存中当线程获取锁的时候,JVM会把该线程的本地内存置为无效,必须从主内存读取共享变量当在打印的时候println,为什么能够读到共享变量,这个println底层也是使用的synchronized关...原创 2020-04-20 14:07:15 · 176 阅读 · 0 评论 -
阿里巴巴线程知识点
单例的,双重检查机制是安全的吗?不是。new出一个对象需要三个步骤内存中分配空间 1空间初始化 2把这个空间的地址给我们的引用 3有可能执行的顺序是不同的,有可能是1,3,2,这时候还没有初始化所以会产生null执行异常多线程的异步任务使用场景:web,多线程场景下,用户请求,线程跑的具体任务,拆分成RPC服务具体的内容放到队列中,然后直接给用户响应,你的任务我已经处理了。在提...原创 2020-04-16 17:34:51 · 207 阅读 · 0 评论 -
线程安全知识点
线程数个数的配置,或者说线程池参数的配置是什么?合理的进行首先需要确认任务的特性?cpu密集型:机器cpu核心数+1io密集型:(磁盘,网络)机器cpu核心数*2为什么这么设置呢,大量的经验,比如netty就是这么设置的混合型:(cpu密集,io密集)如果它们两个相差不大的话(执行时间),尽量拆分,两个线程池ScheduleThreadPoolExecutor 延时线程池的使用它的...原创 2020-04-14 19:05:24 · 287 阅读 · 0 评论 -
百度线程面试题
在java 中守护线程和用户线程的区别?java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true 则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。两者的区别:唯一...原创 2020-04-13 14:51:20 · 153 阅读 · 0 评论 -
线程池你值的了解
线程池简单的认识:为什么要用线程池降低资源消耗提高响应速度提高线程的可管理性ThreadPoolExecutor的类关系Executor是一个接口,它是Executor的基础框ExecutorService接口继承了ExecutorAbstractExecutorService抽象类实现了ExecutorService接口中的大部分方法ThreadPoolExecutor是线程池...原创 2020-04-10 10:32:28 · 95 阅读 · 0 评论 -
线程中高逼格类和概念
线程中的常见类及概念大家都是用过,TreeMap和TreeSet,使用红黑树按照key的顺序,进行存储,但是只能在单线程的场景下。在多线程下面使用ConcurrentSkipListMap和ConcurrentSkipListSet。就是所说的跳跃表。ConcurrentSkipListSet本质上就是ConcurrentSkipListMap。ConcurrentLinkedQueue...原创 2020-04-10 09:58:51 · 108 阅读 · 0 评论 -
并发下map问题都有什么?
并发下的map问题并发下的map问题都有什么?Q:HashMap 和HashTable 有什么区别?A:①、HashMap 是线程不安全的,HashTable 是线程安全的;②、由于线程安全,所以HashTable 的效率比不上HashMap;③、HashMap 最多只允许一条记录的键为null,允许多条记录的值为null,而HashTable 不允许;④、HashMap 默认初始化...原创 2020-04-08 11:56:53 · 487 阅读 · 0 评论 -
线程中的一些简单总结
线程中一些简单总结简单的总结:为什么扩容的数量都是2的幂指数呢这样做可以加快速度,很多节点在扩容前后都是可以保持不变的ConcurrentHashMap的弱一致性?在get(key)的时候是在链表进行遍历,有可能返回的是过时的数据。那怎么保持强一致性呢?Collections.synchronizedMap()方法。在多线程的情况下,并且是jdk1.7的场景应该尽量避免使用Con...原创 2020-04-08 11:53:45 · 111 阅读 · 0 评论 -
面试需要注意的细节
面试需要注意的细节1.写上自己的博客,公众号等等2.代码有洁癖,喜欢看书,目标架构师3.项目经历,是项目和经历4.简历建议是3页5.想去更大的公司发展,公司方向调整,和个人的发展方向不符6.了解公司加班的时长频率。如果工作需要的合理加班,当然可以接受7.开发经验还行,产品思维还不够,有待加强7.想成为一个架构师8.有什么工作培训的,你为什么待在这里9.月薪是不是工资加上绩效10...原创 2020-03-30 10:41:33 · 143 阅读 · 0 评论 -
简单认识HashMap->ConcurrentHashMap
HashMap->ConcurrentHashMap简单认识什么是hash呢?就是把任意长度的输入,通过散列算法换成固定长度的输出。常用的hash函数:直接取余法,乘法取整法,平方取中法。hash冲突怎么解决呢?开放寻址,在散列,连地址法,常见的有MD5,SHA-1,不可逆。不安全,撞库可以找到,加密加盐值。HashMap大家都是hashMap是不安全的,但是它为什么不是...原创 2020-04-07 22:34:39 · 128 阅读 · 0 评论 -
线程-AQS-注意的细节点
线程-AQS-注意的细节点1.等待通知模式下,一般我们使用notifyAll,因为在通知的时候我们不确定,通知的这个就是我们想要的,所以一般使用notifyAll。2.独占式获取锁和共享式获取锁,独占式在获取锁的时候,只唤醒后面的一个节点(线程)。共享式获取锁的时候会传播的形式,唤醒后面所有的节点。Condition,其实也是一个队列。等待队列。在调用await的时候,把同步器的首节点,放...原创 2020-04-04 20:31:47 · 216 阅读 · 0 评论 -
线程-AQS 中的数据结构
节点 Node既然说 Java 中的 AQS 是 CLH 队列锁的一种变体实现,毫无疑问,作为队列来 说,必然要有一个节点的数据结构来保存我们前面所说的各种域,比如前驱节点, 节点的状态等,这个数据结构就是 AQS 中的内部类 Node。作为这个数据结构应 该关心些什么信息?1、线程信息,肯定要知道我是哪个线程;2、队列中线程状态,既然知道是哪一个线程,肯定还要知道线程当前处在 什么状态,是...原创 2020-03-28 23:03:03 · 288 阅读 · 0 评论 -
线程-显示锁-AQS
显示锁什么是显示锁呢?它是个synchronized对应的一个东西。synchronized是悲观锁,非显示锁,非公平锁。悲观锁是,总有刁民想害朕。非公平锁,在等待获取锁的时候,随机线程去获取锁。公平是,等待时间长的线程去获取锁。非公平锁的效率高。synchronized是java的特性,lock是java的类。Lock常用的lock有ReentrantLock-可重用锁。常用用在递归中,自...原创 2020-03-23 23:00:50 · 154 阅读 · 0 评论