![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java高并发
文章平均质量分 93
Ambition_Bit
The Future can be expected.
展开
-
初识AQS-ReentrantLock加锁过程
Java的内置锁一直备受争议,在JDK1.6之前,synchronized这个重量级锁其性能一直较为低下:虽然在java1.6开始,进行了大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷的隐式获取锁和释放锁的机制(基于JVM机制),但是它却缺少了获取锁和释放锁的可操作性,可中断超时获取锁,且它在独占式的高并发环境下性能大打折扣:常见概念:自旋:什么是自旋,自旋就是一个通过循环不断尝试的过程。AQS队列:结构是使用双向链表设计的.原创 2020-08-31 01:01:08 · 315 阅读 · 0 评论 -
创建线程的四种方式
创建线程的几种方式:在Java中创建线程的方式主要有三种:继承Thread类:继承Thread类重写run()方法,这个是在初学Java多线程的时候都了解的创建线程的方式。其中每一个继承Thread类的子类都要重写run()方法,run()方法作为每一个线程的核心方法。第一步:继承Thread类,重写run()方法。第二步:线程的启动,调用start()方法,将新创建的线程加入到就绪状态。其中run()方法是在操作系统创建完线程后回调的方法,不可以手动调用;手动调用run方法只是执行方法而已,并原创 2020-08-30 22:39:36 · 385 阅读 · 1 评论 -
ThreadLocal初次见面
ThreadLocal是什么?开始学习ThreadLocal相信大家对并发编程都有一点点了解了,在多个线程访问一个共享变量的时候,为了保证线程安全,一般对于共享变量的访问需要进行适当的同步,就需要对变量进行加锁,这显然增加了使用者的负担,那么是否有一种方案让每一个线程访问自己的变量呢?不用你去思索了,JAVA开发者已经帮你想好了,使用ThreadLocal可以帮你解决这样的困惑。传统方案的设计ThreadLocal设计如上图可以看出,ThreadLocal为每一个线程创建了一个资源对象,线程之间原创 2020-08-20 01:30:23 · 284 阅读 · 0 评论