多线程
文章平均质量分 63
戒酒的李白xc
java攻城狮
展开
-
CAS理解
在jdk5 之前java是靠synchronized来保证同步的,这样就引入了锁,这样会有以下问题: 1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。 volatile是轻量级的同步机制,是不错的机制,但是volatile不能保证原子性。因此对于同步最终还是要回到锁机制上来。 独占锁是一种悲观锁,synchronized就是原创 2021-12-19 21:06:43 · 729 阅读 · 0 评论 -
多线程系列--创建线程的2种方式(二)
常用的两种方式,Thread 和Runnable Thread 是一个类,它实现了Runnable 接口。 Runnable 是一个接口。 采用继承的方式实现多线程: 打印的结果: Thread-1 卖票:ticket10 Thread-1 卖票:ticket9 Thread-1 卖票:ticket8 Thread-1 卖票:ticket7 Thread-1 卖票:ticket6 Thread-1 卖票:ticket5 Thread-1 卖票:ticket4 Thread-1 卖票..原创 2021-11-22 16:01:31 · 234 阅读 · 0 评论 -
多线程系列--基础知识(一)
线程基础知识 线程有五种状态: 新建状态(New) 线程对象被创建后,处于新建状态。Thread thread = new Thread(); 就绪状态(Runnable) 也可称为'可执行状态',线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。thread.start()处于就绪状态的线程,随时可能被CPU调度执行。 运行状态(Running) 线程获取CPU权限进行执行。线程只能从就绪状态进入到运行状态。 阻塞状态(Blocked)阻塞状态是线程因为某种原...原创 2021-11-18 14:43:30 · 106 阅读 · 0 评论