多线程的进击:从基础到高级
文章平均质量分 70
Japson_z
这个作者很懒,什么都没留下…
展开
-
多线程之基础篇01:进程与线程的基本概念
多线程之基础篇01:进程与线程的基本概念标签: 多线程多线程之基础篇01进程与线程的基本概念 进程的基本知识 进程的概念与特征 进程的状态与转换 线程的基本概念 线程的状态 进程的基本知识进程的概念与特征为了更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性,引入了进程的概念。我们可以从不同的角度来定义进程: 进程是程序的一次执行过程。 进程是一个程序及其数据在处理机上顺序执行时所发生的活原创 2018-03-17 09:04:20 · 238 阅读 · 0 评论 -
JUC线程进阶篇08:线程中常见的8中用锁情况
JUC线程进阶篇08:线程中常见的8中用锁情况 标签: 多线程 JUC线程进阶篇08:线程中常见的8中用锁情况 8种情况 题目 1.两个普通同步方法,两个线程,标准打印,结果:one two 2.新增Thread.sleep()给getOne(),结果:one two 3.新增普通方法getThree(),结果:three one two 4.两个普通同步方法,两个对象,结果:two on...原创 2018-05-26 21:56:47 · 221 阅读 · 0 评论 -
JUC线程进阶篇07:ReadWriteLock读写锁
JUC线程进阶篇07:ReadWriteLock读写锁 标签: 多线程 段落引用 JUC线程进阶篇07:ReadWriteLock读写锁 为什么许多要读写锁 Readwritelock ReentrantReadWriteLock分析 源码 特征 代码演示 写写需要互斥 读读不需要互斥 为什么许多要读写锁 互斥锁lock将语句块标记为临界区,当一个线...原创 2018-05-26 21:56:25 · 349 阅读 · 0 评论 -
JUC线程进阶篇06:生产者消费者案例与Condition线程通信
JUC线程进阶篇06:生产者消费者案例与Condition线程通信 标签: 多线程 JUC线程进阶篇06:生产者消费者案例与Condition线程通信 使用synchronized解决线程安全问题 生产者消费者的问题 等待唤醒机制 问题1:线程死循环 问题2 :虚假唤醒 同步锁的方式解决线程安全问题 线程通信 Condition工具类 线程按序交替 使用sync...原创 2018-05-26 21:55:59 · 320 阅读 · 0 评论 -
JUC线程进阶篇05:同步锁Lock
JUC线程进阶篇05:同步锁Lock标签: 多线程JUC线程进阶篇05同步锁Lock 了解Lock Lock方法讲解 四种获取锁的方式 Lock和Synchronized的区别 场景卖票的线程安全问题 使用ReentrantLock JDK5 以前解决多线程安全问题的方式: 1. 同步代码块 2. 同步方法 都需要使用synchronized关键字,是隐式的锁。在Concurrent包中提供了原创 2018-04-22 21:23:37 · 353 阅读 · 0 评论 -
JUC线程进阶篇04:创建线程之实现Callable接口
JUC线程进阶篇04:创建线程之实现Callable接口标签: 多线程JUC线程进阶篇04创建线程之实现Callable接口 腾讯面试题 Callable接口 了解Callable Callable的执行方式 使用FutureTask执行 借助线程池来运行 代码演示 腾讯面试题在面腾讯时遇到一个面试题:创建线程的方式有几种?创建线程的方式一共有四种: 继承Thread类 实现Runnable接口 实原创 2018-04-22 21:23:14 · 356 阅读 · 0 评论 -
JUC线程进阶篇03:CountDownLatch闭锁
JUC线程进阶篇03:CountDownLatch闭锁标签: 多线程JUC线程进阶篇03CountDownLatch闭锁 场景 错误的写法 正确的写法 分析 代码 CountDownLatch与join的区别CountDownLatch,直译的意思是:倒计时的闩。专业的称呼是:闭锁。既然是一个“门闩”,那么在闭锁到达结束状态之前,这个门一直都是关闭的,没有任何线程能够通过;当到达结束状态时,会打开门原创 2018-04-22 21:22:31 · 198 阅读 · 0 评论 -
JUC线程进阶篇01:Java内存模型
JUC线程高级篇01:Java内存模型标签: 多线程JUC线程高级篇01Java内存模型 Java内存模型 主存和线程自己的内存 i i 1 缓存一致性 并发编程三大概念 原子性 什么是原子性 Java中的原子性 可见性 什么是可见性 Java中的可见性 有序性 什么是有序性 多线程中的有序性 有序性的happens-before原则 Java语言提供了一种稍弱的同步机制,即volatile变量原创 2018-04-18 09:07:39 · 322 阅读 · 0 评论 -
JUC线程进阶篇02:volatile关键字与CAS算法
JUC线程进阶篇02:volatile关键字与CAS算法 标签: 多线程 JUC线程进阶篇02:volatile关键字与CAS算法 Volatile变量 什么是Volatile Volatile保证可见性 Volatile保证有序性 volatile不能确保原子性 CAS算法 什么是CAS算法 使用原子变量 模拟CAS算法 通过《JUC线程高级篇01:Java内存模...原创 2018-04-18 09:08:59 · 342 阅读 · 2 评论 -
多线程之基础篇08:线程间的通信
多线程之基础篇08:线程间的通信标签: 多线程多线程之基础篇08线程间的通信 线程间的通信 方法详解 wait方法 notify方法 通信和锁 代码演示 简单实现 生产者消费者问题 我们在上一篇笔记中提出了一个问题:如何让两个线程交替执行,这就涉及到线程间 的通信。线程间的通信与线程间的通信有关的方法是:Object类中的wait() 与 notify() 和 notifyAll()因为wait和n原创 2018-03-17 09:09:03 · 327 阅读 · 0 评论 -
多线程之基础篇07:线程的同步机制
多线程之基础篇07:线程的同步机制标签: 多线程多线程之基础篇07线程的同步机制 卖票的问题 线程的安全问题 出现的问题的原因 解决方法 方式一同步代码块 实现Runnable接口的方法 继承Thread的方法 方式二 同步方法 实现Runnable接口的方法 继承Thread的方法 线程同步练习 Description Code 总结 卖票的问题我们在之前写三个窗口卖票的问题时,所写的代码是有问题原创 2018-03-17 09:08:39 · 519 阅读 · 0 评论 -
多线程之基础篇06:守护线程
多线程之基础篇06:守护线程标签: 多线程多线程之基础篇06守护线程 线程的分类 守护线程的设置 代码演示 Description Code 线程的分类在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)。 用户线程: 运行在前台,执行具体的任务。程序的主线程、连接网络的子线程等都是用户线程。 守护线程: 运行在后台,为其他前台线程服务。一旦所有用户原创 2018-03-17 09:06:26 · 296 阅读 · 0 评论 -
多线程之基础篇05:线程生命周期和优先级
多线程之基础篇05:线程生命周期和优先级标签: 多线程多线程之基础篇05线程生命周期和优先级 生命周期 优先级 线程的优先级及设置 线程的调度策略 之前我们简单的介绍过线程的生命周期,但是我们再强调一下生命周期说明: 线程共包括以下5种状态: 新建状态(New): 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread();。 就绪状态(Runnable原创 2018-03-17 09:06:02 · 377 阅读 · 0 评论 -
多线程之基础篇04:两种方式实现的比较
多线程之基础篇04:两种方式实现的比较标签: 多线程多线程之基础篇04两种方式实现的比较 问题 继承Thread类 实现Runnable方法 为什么会出现不同 问题我们通过经典的例子来比较两种方法:H市火车站有三个窗口同时卖票,用三个线程来模拟并实现继承Thread类package charThread;class Window1 extends Thread { int ticketsCo原创 2018-03-17 09:05:26 · 185 阅读 · 0 评论 -
多线程之基础篇03:实现Runnable的方式创建多线程
多线程之基础篇03:实现Runnable的方式创建多线程标签: 多线程多线程之基础篇03实现Runnable的方式创建多线程 一个例子 继承方式 VS 实现方式 在Java中创建线程除了继承Thread类之外,还可以通过实现Runnable接口来实现类似的功能。实现Runnable接口必须重写其run方法。一个例子同样一个例子:有两个子线程,子线程和主线程都要执行打印1-10的数步骤: 创建一个实现原创 2018-03-17 09:05:04 · 634 阅读 · 0 评论 -
多线程之基础篇02:继承Thread类的方式创建多线程
多线程之基础篇02:继承Thread类的方式创建多线程标签: 多线程多线程之基础篇02继承Thread类的方式创建多线程 一个例子 Thread的常用方法 方法详解 start 和 run的区别说明 currentThread方法 static void sleep 方法 static void yield 方法 join方法 isAlive方法 interrupt方法 一个例子我们通过一个例子来学原创 2018-03-17 09:04:43 · 1029 阅读 · 0 评论 -
JUC线程进阶篇09:线程池
JUC线程进阶篇09:线程池 标签: 多线程 JUC线程进阶篇09:线程池 了解线程池 为什么使用线程池 线程池工作流程 线程池体系结构 Executor主要结构 ThreadPoolExecutor创建线程池 Executors工具类创建线程池 线程池的使用 重要方法 代码演示 线程调度 了解线程池 为什么使用线程池 线程池提供了一个线程队列,队列...原创 2018-05-26 21:57:14 · 844 阅读 · 0 评论