![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
文章平均质量分 52
baerwang
hi
展开
-
Java线程的6种状态及切换
Java线程状态常见的线程状态有六种:new一个线程时,还没有调用start()该线程处于新建状态线程对象调用start()方法时候,他会被线程调度器来执行,也就是交给操作系统来执行了,那么操作系统来运行的时候,这整个状态叫Runnable,Runnable内部有两个状态 (1)Ready就绪状态/(2)Running运行状态。就绪状态是说扔到CPU的等待队列里面去排队等待CPU运行,等真正扔到CPU上去运行的时候才叫Runnable运行状态。(调用yiled时候会从Running状态跑到Ready原创 2021-03-01 11:59:27 · 83 阅读 · 0 评论 -
Java并发编程的艺术 - Java 阻塞队列
什么是阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。支持阻塞的插入方法:当队列满的时候,队列会阻塞插入元素的线程,知道对了不满。支持阻塞的移除方法:当队列为空时候,获取元素的线程会等待队列变为非空。 阻塞队列常用生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者从队列里获取元素。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。 在阻塞队列不可用时,附加操作提供了四种处理方式方法/处理方式抛出异常返回特殊值一直阻塞超时退原创 2020-12-29 17:51:13 · 73 阅读 · 0 评论 -
Java并发编程的艺术 - ConcurrentHashMap(JDK1.7版本)
Java并发编程的艺术 - ConcurrentHashMap(JDK1.7版本)为什么要使用ConcurrentHashMap在并发编程中使用HashMap会导致程序死循环。而使用线程安全的HashTable效率又非常低下。线程不安全的HashMap 在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发的情况下不能使用HashMap。执行以下代码会造成死循环。public class ConcurrentHashMapTest { f原创 2020-12-27 16:48:54 · 377 阅读 · 1 评论 -
Java 并发编程的艺术 - 线程的supend()、resume()、stop()
Java 线程的supend()、resume()、stop() public static void main(String[] args) throws Exception { Thread thread = new Thread(new Runner(), "PrintThread"); thread.setDaemon(true); thread.start(); TimeUnit.SECONDS.sleep(3);原创 2020-11-10 06:48:08 · 231 阅读 · 1 评论 -
Java 并发编程的艺术 - volatile
Java 并发编程的艺术 - volatile在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的"可见性"。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用适当的话,它比synchronized的使用和执行成本更低,因为它不会引起上下文的切换和调度。volatile的定义与实现原理Java编程语言允许线程访问共享变量,是为原创 2020-10-26 22:49:35 · 74 阅读 · 0 评论