20190117-多线程随笔

2019-01-17  本文已影响0人  熊大熊饿

取指 解码 执行 访存 写回

多线程:开启多个执行序列分别执行一项任务的不同部分。这些执行序列如果存在对同一份数据的操作,需要对该操作作互斥或同步处理。

互斥和同步是相对于这些操作之间的关系而言的。

互斥是指该操作具有排它性或者唯一性。(比如多个人同时申请一块gpu或者购买一张火车票 ,暂且称之为消费者-消费者竞争关系)

同步是指这两个操作之间存在之行先后顺序。(比如:对视频流处理的步骤分为几部分这种流水线方式运行或者生产者-消费者协作模式)

在Java中,开启多线程有两种方式

1. extend thread

启动:

run 在主调线程中立即启动

start 系统找一个时间来启动线程

2.implement runnable

相比于1的优势在于java不支持多继承,会影响任务类继承其它线程。

可重入锁:如果一个线程获取锁后还没释放可以再次获取锁。

同步代码块的锁锁的是当前对象this:因此两个线程调用一个对象的两个不同的synchronize方法,会发生同步。

中断

suspend 释放锁

yield 不释放锁

上一篇 下一篇

猜你喜欢

热点阅读