多线程高并发
文章平均质量分 82
工程师小A
这个作者很懒,什么都没留下…
展开
-
Java中终止(销毁)线程的方法
三种方法:设置退出标志,使线程正常退出,也就是当run()方法完成后线程终止 使用interrupt()方法中断线程 使用stop方法强行终止线程(不推荐使用,Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃,使用它们是极端不安全的!)stop()方法太过于暴力,会强行把执行一半的线程终止。这样会就不会保证线程的资源正确释放,通常是没有给与线程完成资源释放工作的机会,因原创 2021-01-26 11:21:33 · 477 阅读 · 0 评论 -
volatile关键字的作用
一、volatile关键字的作用1、保证可见性;2、防止指令重排;3、但是不保证原子性;二、可见性是什么?在JMM(java memory model)java内存模型中,其他线程从主内存空间把值拷贝到自己的工作空间,线程修改之后的值会返回给主内存,主内存会通知其他线程,此为可见性。三、指令重排CPU为了执行效率会并发执行操作指令,volatile可以使指令一个一个的执行。四、如何解决原子性问题1、通过synchronized关键字。2、通过使用AtomicXX,不加锁,采用CAS(co原创 2020-07-15 10:18:07 · 15508 阅读 · 0 评论 -
synchronized与Lock的区别
synchronized与Lock的区别1、锁的实现方式不同:synchronized采用monitor enter/monitor exite实现;Lock采用CAS实现。2、锁的释放方式不同:synchronized自动释放锁;Lock需要手动释放。3、synchronized是java关键字;Lock是java的API。4、synchronized不可以中断;Lock可以中断(lockInterruptibly()方法)。5、synchronized是非公平锁;Lock可是是非公平锁和公平锁原创 2020-07-15 09:56:01 · 133 阅读 · 0 评论 -
线程、进程与协程(纤程)的区别
线程与进程的区别## 标题1、进程:电脑上一个QQ.exe程序,双击打开它登录进去,这个时候就是一个进程。即操作系统分配内存资源的最小单位。2、线程:一个程序里面不同的执行路径叫做一个线行。即CPU最小执行单元。3、协程(纤程):虚拟pc管理的属于自己空间的线程即轻量级线程。...原创 2020-07-10 18:07:46 · 504 阅读 · 0 评论 -
AbstractQueuedSynchronizer(AQS)的学习
一、AbstractQueuedSynchronizer是啥?定义:是抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch…。核心采用 CAS +volatile :原因在于属性state,采用volatile修饰,compareAndSetState()、compareAndSetHead等方法采用Unsafe(CAS)二 、框架AQS定义两种资源共享方式:Exc原创 2020-07-06 17:51:34 · 109 阅读 · 0 评论