第4章 Java并发编程基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/NCUscienceZ/article/details/87216428

4.1 线程简介
4.1.1 什么是线程
1、进程线程区别

4.1.2 为什么要使用多线程
1、使用多线程的3点原因?

4.1.3 线程优先级
1、线程优先级是通过哪个成员变量来控制的?
2、在线程构建的时候通过调用哪个方法来设置线程的优先级?

4.1.4 线程的状态
1、线程的6中状态?
2、牢记线程状态变迁图
在这里插入图片描述
4.1.5 Daemon线程
1、什么是Daemon线程?

4.2 启动和终止线程
4.2.1 构造线程
1、重点记一下,构造线程初始化内容:

private void init(ThreadGroup g, Runnable target, String name,long stackSize,
AccessControlContext acc) {
if (name == null) {
throw new NullPointerException("name cannot be null");
}
// 当前线程就是该线程的父线程
Thread parent = currentThread();
this.group = g;
// 将daemon、priority属性设置为父线程的对应属性
this.daemon = parent.isDaemon();
this.priority = parent.getPriority();
this.name = name.toCharArray();
this.target = target;
setPriority(priority);
// 将父线程的InheritableThreadLocal复制过来
if (parent.inheritableThreadLocals != null)
this.inheritableThreadLocals=ThreadLocal.createInheritedMap(parent.
inheritableThreadLocals);
// 分配一个线程ID
tid = nextThreadID();
}

4.2.2 启动线程
4.2.3 理解中断
1、线程中断的三大方法是什么?
2、线程中断Thread.isInterrupted()与Thread.interrupted()关键区别是什么???

4.2.4 过期的suspend()、resume()和stop()
1、什么弊端?(实战中都讲过)
4.2.5 安全地终止线程
1、怎们安全的终止线程?(实战中都讲过)

4.3 线程间通信
4.3.1 volatile和synchronized关键字
1、synchronized底层是通过哪两个指令来对什么进行获取?
2、所有对象都有监视器对象吗???

4.3.2 等待/通知机制
1、传统消费者模式是如何实现的?其弊端是什么?(P192)
2、Java内置的等待/通知机制相关的5种方法是什么???
3、这5种方法是在Tread类里吗?
4、wait()与notify()方法具体如何使用?
5、调用wait()、notify()以及notifyAll()时需要注意的五点细节?

4.3.3 等待/通知的经典范式
1、等待方遵循什么原则?
2、通知方遵循什么原则?

4.3.4 管道输入/输出流
1、管道输入/输出流和普通的文件输入/输出流或者网络输入/输出流不同之处是什么?
2、管道输入/输出流主要包括了哪4种具体实现?

4.3.5 Thread.join()的使用
1、Thread.join()的使用方法?

4.3.6 ThreadLocal的使用
1、详见实战并发

4.4 线程应用实例(略)

猜你喜欢

转载自blog.csdn.net/NCUscienceZ/article/details/87216428