最近遇到一个关于多线程的面试题感觉挺有意思的,题目是这样的:三个线程A,B,C 依次交替打印ABBCCCAAAA… 直到打印到长度为200停止,分别统计每个线程打印多少次. 乍看好像并不难,但是其实涉及到的问题还是比较多…
分类:java并发
java中线程的停止以及LockSupport工具类
看jstack输出的时候,可以发现很多状态都是TIMED_WAITING(parking),如下所示: “http-bio-8080-exec-16” #70 daemon prio=5 os_p…
【笑傲江湖】【JUC】原子类
JUC中有一个常用但是又不常用的一组类,经常以Atomic开头,我们叫做原子类,原子类的作用在用到的时候作用很大,不需要的时候,也可以说很少用。但是作为一个Java程序员,还是有必要去解读一下原子类的源码。 目录 什么是…
java四种线程池类型以及可选择的阻塞队列
之前笔记有记录java线程池的拒绝策略,回顾一下线程池的处理任务的优先级: 先考虑corePoolSize、任务队列(缓冲队列)workQueue、最大线程maximumPoolSize,如果三者都满了,使用handle…
java并发基础(三)--- 任务执行
第6章开始是第二部分,讲解结构化并发应用程序,大多数并发应用程序都是围绕“任务执行”构造的,任务通常是一些抽象的且离散的工作单元。 一、线程池 大多数服务器应用程序都提供了一种自然的任务边界:以独立的客户请求为边界。现在…
java常用的几种线程池比较
1. 为什么使用线程池 诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 …
Java之线程池和Lambda表达式
线程池和lambda表达式 学习线程池和lambda表达式的理解 补充一个知识点(单例设计模式) 在多线程中,我们只需要一个任务类,为了防止创建多个任务类,这个时候就需要用到单例模式,单例模式有两种设计: 延迟加载(懒汉…
Java 并发--- 线程池
ThreadPoolExecutor ThreadPoolExecutor继承了AbstractExecutorService类,并提供了四个构造器,事实上,通过观察每个构造器的源码具体实现,发现前面三个构造器都是调用的…
java 多线程总结篇4——锁机制
在开发Java多线程应用程序中,各个线程之间由于要共享资源,必须用到锁机制。Java提供了多种多线程锁机制的实现方式,常见的有synchronized、ReentrantLock、Semaphore、AtomicInte…
Java读写锁
Java读写锁,ReadWriteLock.java接口, RentrantReadWriteLock.java实现。通过读写锁,可以实现读-读线程并发,读-写,写-读线程互斥进行。以前面试遇到一个问题,Concurre…
java缓存用例(包含读写锁,单例)
</pre><pre name="code" class="java"> 一个完整的使用缓存的案例 一、缓存对象类 package com.lendingcloud.rms.web.CacheUt…
JUC之JDK自带锁ReentrantLock
一、初识 ReentrantLock 出身自Java 1.5,中文名可重入锁 是Java JDK自带独占锁的唯一实现,也是最常用的锁,是synchronized的升级版。 1. 我们中间有个synchronized 我们…