多线程设计模式——准备知识

来源:互联网 发布:java 读取pdf文件流 编辑:程序博客网 时间:2024/05/11 12:48

最近在看《Java多线程实战指南(设计模式篇)》(黄文海),快看完了,就慢慢整理一下里面学到的东西,顺便复习下相关的知识点。

标题 ##多线程

线程是Java代码的最小执行单位,可以类比为把一部分任务交给一个人完成,会给这些人一些资源。多线程的执行方式是按照一定的顺序循环执行,不通讯的话相互不影响。

线程的优势和风险

提高系统的吞吐率:可以包需要耗时的操作分配给一个单独的线程等方式让系统资源的浪费减少,提交系统的吞吐率。(当然这只是个例子)
提高响应性:就是一个请求的处理慢了并不会影响其他请求的处理,从而让减少不响应的现象。
充分利用多核CPU资源:多核CUP可以分别处理不同的线程,不至于有其中的空闲导致浪费资源。
最小化对系统资源的利用:非配出不同多线程的资源由开启这个线程的部分给予分配,不会浪费很多资源。(这只是相对于类似情况用进程的方式而言的)
简化程序结果:可以简化相应复杂应用程序的结构(把任务分化,方便管理)
风险
线程安全:多个线程共享相同的数据的时候,有可能会产生一致性的问题(比如线程A改写成了A,需要一些操作,线程B改成了B,需要一些操作,A操作的时候却用了A线程改写成的A,造成操作的问题)。
线程生命的问题:一个线程的创建执行到结束的状态控制问题
上下文切换:线程是循环执行的,一个线程切换到下一个线程的时候需要进行最之前进程状态信息的保存,这回增加系统的校花,不利于系统的吞吐率。
可靠性:如果其中一个线程出现故障终止,其他的线程可能也就无法继续运行。

线程的状态

new新建:一个线程刚刚创建的状态。
running运行:线程的运行状态。
ready就绪:线程等待被执行的状态。
blocked阻塞:一个线程发起一个阻塞式的操作后,或者时期获得一个其他线程持有的锁时,会进入这个状态。
wating等待:线程被特定的方法使其暂时休眠的状态
terminated结束:线程的终止状态。

任务

正如之前的比如,创建线程是为了完成一些事情,这行事情叫做任务,一个线程可以完成一个或者多个任务。

并发

多个线程同一个时间段执行,但不是真正意义上的同时,是以一定的顺序和分配方式交替执行

并行

表示多个任务在同一时间执行

客户端线程

从变成的角度来开,一些程序一个类总是对外提供某些服务,其他类会调用这个类相应的方法来完成这些服务。调用这些服务的类,就叫做客户端线程。

工作者线程

被调用的线程叫做工作者线程

上下文切换

线程是交替执行的,从一个线程切换带另外一个线程的工程叫做上下文切换

显示锁

指的是可以使用和控制的锁,包括sychornized和java.util.concurrent.locks.Lock接口的所有实现类

线程安全

一段草果共享数据的代码就能保证在同意时间内被多个线程执行仍然保持其正确性,就被成为是线程安全的。

创建方式

线程一般有两种创建方式:一是继承Tread类并最少实现其中的run()方法,二是实现runnable接口并实现至少run()方法。(当然线程池可以一次创建多个线程,实际也使用这些方法)

运行方式

一般的代码运行只需要调用相应的方法就要,但是线程的运行不是调用需要运行的run()方法,而是调用star()方法。

0 0
原创粉丝点击