1,Java并发--详解this与Thread.currentThread()的区别:https://blog.csdn.net/championhengyi/article/details/76664491 1,Thread.currnetThread()是指当前运行的线程,在比如在构造函数的时候是主线程 2,this表示当前对象的引用,有Thread1 ,Thread thread2 = new Thread(Thread1),this现在指的是thread1的引用,而且不活那种 3,int…
第 1 章 Java 多线程技能 本章主要内容 线程的启动 如何使线程暂停 如何使线程停止 线程的优先级 线程安全相关的问题 1.1 进程和多线程的概念及线程的优点 进程是操作系统结构的基础:是一次程序的执行:是一个程序及其数据在处理机上顺序执行时所发生的活动:是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位.进程是操作系统管理的基本运行单元. 那什么是线程呢?线程可以理解成是在进程中独立运行的子任务. 使用多线程技术后,可以在同一时间内运行更多不同种类的任务. 1.2…
第 4 章 Lock 的使用 本章主要内容 ReentrantLocal 类的使用. ReentrantReadWriteLock 类的使用. 4.1 使用 ReentrantLock 类 在 Java 多线程中,可以使用 synchronized 关键字来实现线程之间同步互斥,但在 JDK 1.5 中新增加了 ReentrantLock 类也是达到同样的效果,并且在扩展功能上也更加强大,比如具有嗅探锁定.多路分支通知等功能,而且在使用上也比 synchronized 更加的灵活. 4.1.1…
一.第一章 1.自定义线程类中实例变量针对其他线程有共享和不共享之分,自定义线程中的变量,如果是继承自thread类,则每个线程中的示例变量的更改,不影响其他线程2.当多个线程去访问一个局部变量是会产生 非线程安全的问题,需要加synchronize 关键字3.isAlive() 方法,判断当前的线程是否处于活动状态,已启动,且未终止.4.sleep() 方法,在指定的毫秒数内,让当前正在执行的线程休眠,但不释放锁5.停止,中断一个线程,可用stop(已废弃),推荐用interrupted()…
第 7 章 拾遗增补 本章主要内容 线程组的使用. 如何切换线程状态. SimpleDataFormat 类与多线程的解决办法. 如何处理线程的异常. 7.1 线程的状态 线程对象在不同的运行时期有不同的状态,状态信息就存在于 State 枚举类中,如下图: 每个枚举类型的解释如下图: 调用与线程有关的方法是造成线程状态改变的主要原因,其因果关系如下图: 在调用与线程有关的方法后,会进入不同的次线程状态,这些状态之间某些是可双向切换的,比如 WAITING 和 RUNNING 状态之间可以循环地…
第 5 章 定时器 Timer 定时 / 计划功能在移动开发领域使用较多,比如 Android 技术.定时计划任务功能在 Java 中主要使用的就是 Timer 对象,他在内部使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联的. 本章主要内容 如何实现指定时间执行任务. 如何实现按指定周期执行任务. 5.1 定时器 Timer 的使用 在 JDK 库中 Timer 类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务. Timer 类的方法列表: Timer 类的主要作用就…
第 3 章 线程间通信 线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高 cpu 利用率的同时还会使程序员对各线程任务在处理的过程中进行有效的把控与监督. 本章主要内容 使用 wait / notify 实现线程间的通信. 生产者 / 消费者模式的实现. 方法 join 的使用. ThreadLocal 类的使用. 3.1 等待 / 通知机制 线程与线程之间不是独…
第 2 章 对象及变量的并发访问 本章主要内容 synchronized 对象监视器为 Object 时的使用. synchronized 对象监视器为 Class 时的使用. 非线程安全是如何出现的. 关键字 volatile 的主要作用. 关键字 volation 与 synchronized 的区别及使用情况. 2.1 synchronized 同步方法 “非线程安全”其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是取到的数据其实是被更改过的.而“…
第 6 章 单例模式与多线程 本章主要内容 如何使单例模式遇到多线程是安全的.正确的. 6.1 立即加载 / “饿汉模式” 什么是立即加载?立即加载就是使用类的时候已经将对象创建完毕,常见的实现办法就是直接 new 实例化.而立即加载也称为“饿汉模式”. 6.2 延迟加载 / “懒汉模式” 什么是延迟加载?延迟加载就是在调用 get() 方法时实例才被创建,常见的实现办法就是在 get() 方法中进行 new 实例化.延迟加载也称为“懒汉模式”. 1. 延迟加载 / “懒汉模式” 解析 延迟加载…
第一节等待/通知机制 1.1不使用等待/通知机制实现线程间的通讯 1.2什么是等待/通知机制 1.3等待/通知机制的实现 1.4方法wait()锁释放与notify()锁不释放 1.5当interrupt()遇到wait()方法 1.6只通知一个线程 1.7唤醒所有线程 1.8方法wait(long)的使用 1.9通知过早 1.10等待wait的条件发生变化 1.11生产者/消费者模式实现 1.12通过管道进行线程间通信:字节流 1.13通过管道进行线程间通信:字符流 1.14实战:等待/通知之…