Java多线程笔记详解

这是学习多线程知识的学习笔记,大家可以选择自己感兴趣的部分阅读学习

详细代码见github代码

 

Java多线程学习笔记1之多线程基础

内容:

1) 基本概念以及线程的实现方法

 

Java多线程学习笔记2之多线程基础

内容:

1) 数据同步

2) 非线程安全情况以及处理方法

3) Java内存模型

4) Thread.currentThread()抽象方法使用

 

Java多线程学习笔记3之多线程基础

内容:

1) Thread类中的isAlive()、sleep()、getId()、停止线程的方法(interrupt())、

2) interrupted()方法和isInterrupted()方法区别和使用

 

Java多线程学习笔记4之多线程基础

内容:

1) 判断线程是否是停止状态(Thread.interrupted()、this.isInterrupted()方法)

2) 通过抛出异常或者return来真正停止线程

3) stop()方法暴利停止线程以及它被废弃原因

4) 一对方法来暂停和恢复线程(suspend()和resume())

 

Java多线程学习笔记5之多线程基础

内容:

1) suspend与resume方法的缺点和代码案例

2) yeild()方法的使用

3) 线程的优先级详解

4) java中的守护线程和用户线程

 

Java多线程学习笔记6对象及变量的并发访问 

内容:

1) synchronized同步方法(线程安全和非线程安全、锁对象)

2) 脏读

3) synchronized锁重入

 

Java多线程学习笔记7对象及变量的并发访问

内容:

1)  出现异常,锁自动释放

2)  同步不具有继承性

3) synchronized同步语句块

    synchronized方法的弊端

    synchronized代码块间的同步性

    将任意对象作为对象监视器

    synchronized(非this对象x)同步代码块也可以解决"脏读"问题

 

Java多线程学习笔记8对象及变量的并发访问

内容:

1) 静态同步synchronized方法与synchronized(class)代码块

2) Class锁可以对类的所有对象实例起作用 

3) 数据类型String的常量池特性

 

Java多线程学习笔记9对象及变量的并发访问

内容:

1) 多线程死锁条件

2) 成员内部类和静态内部类同步

3) 锁对象改变和锁对象属性的改变

 

Java多线程学习笔记10对象及变量的并发访问

内容:

1) volatile关键字

2) volatile与synchronized关键字的比较

3)  内存模型

4) 原子性、有序性、可视性

5)原子类提供原子操作

 

Java多线程学习笔记11之线程间通信

内容:

1) 等待/通知机制概念

2) 中断和轮询两种基本的方式

3) 等待/通知机制的实现

4) wait()/notify()/wait(long)/notifyAll()文档翻译

 

Java多线程学习笔记12之线程间通信 

内容:

1) wait()锁释放与notify()锁不释放

2) 当interrupt()方法遇到wait()方法

3) notify()与notifyAll()使用

4) 方法wait(long)的作用

5) notify()方法通知过早

6) 调用wait()方法的条件变化,造成逻辑混乱

7) 生产者消费者模式, 一个生产者和一个消费者
 

 

Java多线程学习笔记13之线程间通信

内容:

1)  生产者消费者模型

    多个生产者和多个消费者: 操作值假死及解决

    多个生产者和多个消费者: 操作栈假死及解决

2) 通过管道进行线程间通信

    线程间常用的通信方式介绍

    PipedInputStream和PipedOutputStream字节流/PipedReader和PipedWriter字符流

    JDK英文文档翻译及方法翻译介绍

    PipedInputStream/PipedOutputStream和PipedReader/PipedWriter使用

 

Java多线程学习笔记14之线程间通信

内容:

1) 实战 等待/通知之交叉备份

2) 方法join的使用(Jdk文档翻译及源码解析)

    join()及join(long)的使用和实现原理

    join(long)和sleep(long)的区别及源码分析

 

Java多线程学习笔记15之线程间通信

内容:

1)ThreadLocal类的使用

    JDK文档及方法翻译

    InheritableThreadLocal的使用

 

Java多线程学习笔记16之Lock的使用

 内容:

1) Lock接口/ReentrantLock类/lock()/unlock()方法文档翻译

    翻译中包含了此重入锁与synchronized方法及语句块之间区别及优缺点

2) 使用ReentrantLock实现同步

 

Java多线程学习笔记17之Lock的使用

内容:

1) Lock/ReentrantLock的newCondition()方法及Condition类/await、signal方法文档翻译

2) Condition实现等待/通知使用(错误示例及正确示例)

3) 使用多个Condition实现通知部分线程

4) 实现消费者和生产者模型(利用await()及signal()方法)

 

Java多线程学习笔记18之Lock的使用

内容:

公平锁和非公平锁以及ReentrantLock常用方法的使用

1) 公平锁和非公平锁

2) getHoldCount()、getQueueLength()、getWaitQueueLength()

3) hasQueueThread()、hasQueueThreads()、hasWaiters()

4) lockInterruptibly()、tryLock()、tryLock(long timeout, TimeUnit unit)
 

 

Java多线程学习笔记19之Lock的使用

内容:

ReentrantLock 方法讲解及ReentrantReadWriteLock读写锁详解

5)awaitUninterruptibly()

6) awaitUntil(Date deadline)

4. 使用ReentrantReadWriteLock类

    1) ReentrantReadWriteLock英文文档阅读

    2) 读写锁中的锁降级和锁升级分析

    3) 读写锁的实战

 

Java多线程学习笔记20之定时器Timer 

内容:

    定时器Timer的使用及分析

1) 如何实现指定时间执行任务
2) 如何实现按指定周期执行任务

 

Java多线程学习笔记21之单例模式与多线程

内容:

1) 单例模式(饿汉模式与饱汉模式)

2) DCL双检查锁机制

3) 多种实现单例模式方法以及多线程方法

 

Java多线程学习笔记22之增补拾遗 

内容:

1. 线程组的使用
2. 如何切换线程的状态
3. SimpleDateFormat类与多线程的解决方案
4. 如何处理线程的异常

 

终于结束了!关于Java多线程的知识就讲到这里(书其实早就看完了,但是通过写博客重新温习,翻阅大量中英文资料让我对

多线程有了更深的理解,也为进一步并发知识打下基础,写博客很浪费时间,下个并发专栏会挑重点分享) 

与各位共勉,加油!

你可能感兴趣的:(java,Java多线程)