并发系列1 Java并发编程基础

2019-04-11  本文已影响0人  莫小归

参考:
《Java并发编程的艺术》第四章
《Java多线程编程核心技术》
博客 https://www.jianshu.com/p/8a04b5ec786c Java多线程基础
博客 https://www.jianshu.com/p/12af2d966c13 Java并发编程1

一.线程简介

1.线程和进程
2.为什么使用多线程
3.上下文切换
4.线程优先级
5.线程的状态
状态名称 说明
NEW 初始状态,线程被构建,但还没有调用start()方法
RUNNABLE 运行状态,包括线程在操作系统中就绪和运行两种情况
BLOCKED 阻塞状态,表示线程阻塞于锁
WAITING 等待状态,进入等待状态的线程需要等待其他线程的特定动作(通知或中断)
TIME_WAITING 超时等待状态,进入超时等待状态的线程可以在指定的时间自行返回
TERMINATED 终止状态,表示当前线程已经执行完毕
线程状态切换
6. Daemon线程

二.线程启动和终止

1.构造线程
2.线程的实现
3.线程中断
Modifier and Type Method Description
void interrupt() Interrupts this thread
static boolean interrupted() Tests whether the current thread has been interrupted
boolean isInterrupted() Tests whether this thread has been interrupted

三.线程间通信

1.volatile和synchronized
2.等待/通知机制
while ( value != desire )  {
    Thread.sleep ( 1000 ) ;
}
doSometing();
等待方伪代码
1.获取对象的锁
2.如果条件不满足,则调用对象的wait()方法,被通知后仍要检查条件
3.条件满足则执行对应逻辑
synchronized(对象)  {
      while(条件不满足)  {
            对象.wait();
      }
      对应的处理逻辑
}

通知方伪代码
1.获取对象的锁
2.改变条件
3.通知所有等待在对象上的线程
synchronized(对象)  {
      改变条件
      对象.notifyAll();
}
3.管道输入/输出流
PipedReader in = new PipedReader();
PipedWriter out = new PipedWriter();
//必须连接输入流和输出流,否则抛出异常
out.connect(in);
4.Thread.join()
5.线程变量ThreadLocal

那年离别日,只道住桐庐。桐庐人不见,今得广州书

上一篇 下一篇

猜你喜欢

热点阅读