
Java多线程
Java多线程基础知识
「已注销」
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
多线程面试必备基础知识汇总
多线程基本概念同步和异步,线程和进程,并发和并行,临界资源,阻塞,死锁,饥饿,活锁,线程的并发级别多线程内存模型JMM的基本概念,主内存与工作内存的数据交互,多线程中的原子性、可见性、有序性,指令重排,volatile关键字Hello,Thread如何创建线程,线程的生命周期,线程的基本状态,线程的基本操作:“sleep、yield、jion,线程停止、线程中断、wait、no...原创 2019-04-04 16:43:50 · 207 阅读 · 0 评论 -
多线程工具类:CountDownLatch、CyclicBarrier、Semaphore、LockSupport
◆CountDownLatch◆假如有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以。比如你想要买套房子,但是呢你现在手上没有钱。你得等这个月工资发了、然后年终奖发了、然后朋友借你得钱还给你了、然后再给朋友借一部分才可以买,这种场景你就可以使用CountDownLatch。CountDownLatch是JDK为我们提供的一个计数器,它的操作是原子操作,同一时间只能有一个...原创 2019-03-31 22:45:06 · 394 阅读 · 0 评论 -
生产者/消费者问题
生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信(解耦),生产者将消费者需要的资源生产出来放到缓冲区,消费者把从缓冲区把资源拿走消费。在这个模型中,最关键就是内存缓冲区为空的时候消费者必须等待,而内存缓冲区满的时候,生产者必须等待。其他时候就是一边在生产一边在消费。值得注意的是多线程对内存缓冲区的操作时必须保证线程安全,所以需要设计锁的策略。...原创 2019-03-31 22:43:10 · 226 阅读 · 0 评论 -
Java原子类操作原理剖析
◆CAS的概念◆对于并发控制来说,使用锁是一种悲观的策略。它总是假设每次请求都会产生冲突,如果多个线程请求同一个资源,则使用锁宁可牺牲性能也要保证线程安全。而无锁则是比较乐观的看待这个问题,它会假设每次访问都没有冲突,这样就提高了效率。但是事实难料、这个冲突是避免不了的,无锁也考虑到了肯定会遇到冲突,对于冲突的解决无锁就使用一种比较交换(CAS)的技术来检测冲突。一旦检测到冲突就重试当前操...原创 2019-03-31 22:31:17 · 179 阅读 · 0 评论 -
ThreadLocal及InheritableThreadLocal的原理剖析
我们知道,线程的不安全问题,主要是由于多线程并发读取一个变量而引起的,那么有没有一种办法可以让一个变量是线程独有的呢,这样不就可以解决线程安全问题了么。其实JDK已经为我们提供了ThreadLocal这个东西。◆ThreadLocal基本使用◆当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的...原创 2019-03-28 00:01:52 · 199 阅读 · 0 评论 -
Java线程池核心原理剖析
在系统开发时,我们经常会遇到“池”的概念。使用池一种以空间换时间的做法,通常在内存中事先保存一系列整装待命的对象,以供后期供其他对象随时调用。常见的池有:数据库连接池,socket连接池,线程池等。今天我们就来看一下线程池的概念。◆Executor◆JDK为我们提供了一套Executor框架来方便我们来管理和使用线程池。打开java.util.concurrent.Executo...原创 2019-03-27 09:13:15 · 266 阅读 · 0 评论 -
浅谈Java中的锁:Synchronized、重入锁、读写锁
Java开发必须要掌握的知识点就包括如何使用锁在多线程的环境下控制对资源的访问限制◆Synchronized◆首先我们来看一段简单的代码: 12345678910111213141516171819 public class NotSyncDemo { public static int i=0; ...原创 2019-03-26 10:13:04 · 540 阅读 · 0 评论 -
Hello,Thread
创建线程的三种方法,线程的生命周期,sleep,yield,join,wait 和notify,线程组,守护线程,线程的优先级◆如何创建线程◆Java 中创建线程的方法有三种:继承 Thread 类创建线程新建一个类继承 Thread 类,并重写 Thread 类的 run() 方法。创建 Thread 子类的实例。调用该子类实例的 start() 方法启动该线程。代码举例...原创 2019-03-22 09:06:47 · 204 阅读 · 0 评论 -
Java多线程内存模型
JMM的基本概念,主内存与工作内存的数据交互方式与规则。多线程中的原子性、可见性、有序性。指令重排。volatile关键字◆JMM的基本概念◆Java作为平台无关性语言,JLS(Java语言规范)定义了一个统一的内存管理模型JMM(Java Memory Model)。JMM规定了jvm内存分为主内存和工作内存 ,主内存存放程序中所有的类实例、静态数据等变量,是多个线程共享的,而...原创 2019-03-21 09:03:33 · 143 阅读 · 0 评论 -
多线程基本概念
同步和异步,线程和进程,并发和并行,临界资源,阻塞,死锁,饥饿,活锁,线程的并发级别同步和异步同步就好比打电话,通信双方,你一句我一句,一句话得不到回应就会一直问:“喂?喂?可以听到么?是不是信号不好呀”。异步就像发短信,发完短信我就去干点别的,看个视频、玩个游戏、干啥都行,等对方给我回信息了我再来处理短信(也可以不处理)。线程和进程进程的概念听起来很抽象,不大好...原创 2019-03-20 09:27:23 · 190 阅读 · 0 评论