温故而知新 --- Java多线程
- 1. 关键字
- 1.1 并发与并行
- 1.2 进程和线程
- 2. Java 线程
- 2.1 Java的主线程
- 2.2 线程声明周期
- 3. Java 线程三种实现
- 1.1 Big Data -- Postgres
- 3. Java 线程三种实现
- 1.1 Big Data -- Postgres
- 4. Awakening
- 1.1 Big Data -- Postgres
1. 关键字
1.1 并发与并行
- 并发(concurrency)是在同一时间段,多个任务都在执行。宏观上是同时执行,微观上是顺序地交替执行
- 并行(parallellism)是一组程序按独立异步的速度执行,无论从微观还是宏观,多个任务都是同时执行的
简单举个例子:主要看是否是同时
- 你吃饭吃到一半,电话来了,你一直吃完以后才可以去接,这就说明你不支持并发也不支持并行。
- 你吃饭吃到一半,电话来了,你停下吃饭去接电话,接完后继续吃饭,这说明你支持并发。(可以不同时)
- 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行(必须同时)
1.2 进程和线程
- 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础
- 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
简单举个例子:
- 开机后,打开chrome浏览器是开启一个进程。
- 我同时浏览四个网页,这就是多线程。
2. Java 线程
2.1 Java的主线程
每个java程序都含有一个线程,那就是主线程(main线程)。Java应用程序都是从主类main方法执行的,当jvm加载代码,调动方法之后,就会启动一个线程,这个线程就是主线程,负责执行main方法。如果在主线程里面创建其他线程,就会在主线程和其他线程来回切换,直到其他所有线程结束才会结束主线程
2.2 线程声明周期
在线程的声明周期中,要经过新建(New),就绪(Runnable),运行(Running),阻塞(Blocked)和死亡(Dead)5种状态
新建状态:
线程对象声明和创建,未被执行之前。就绪状态:
处于新建状态的线程被启动后进入线程队列排队等待CPU时间片。运行状态:
就绪状态的线程被调度并获得CPU资源。阻塞状态:
在特殊情况下让出CPU资源暂时中止自己的执行。消亡状态:
线程执行完成或者程序停止运行。
3. Java 线程三种实现
1.1 Big Data – Postgres
3. Java 线程三种实现
1.1 Big Data – Postgres
4. Awakening
1.1 Big Data – Postgres
在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。