java并发之概念详解-01

同步与异步

        同步与异步都是对于方法来讲的。如果一个方法是同步的,那么必须等到该方法执行完成后才能执行下面的代码,如果方法是一个异步方法,那么在执行该方法时会立即返回,这里并不是说该方法已经执行完成,而是单独去启动一个线程去执行,而后面的代码也不必等到该方法执行完成后在去执行。

并行与并发

        并行是指单个线程或单个进程同时执行,发生在多个cpu中,并发是指在单个cpu中在不同的时间段处理不同的事,不能同时处理不同的事。

临界区

        临界区用来表示一种公共资源或者是共享数据,可以被多个线程使用。但是每一次,只能有一个线程使用他,一点临界区被占用,其他的线程如果想要使用,那么这个线程就必须等待上一个线程释放。

阻塞与非阻塞

        阻塞与非阻塞是对于线程来讲的,如果一个线程已经获得了临界去的资源时,其他线程也想进入临界去获取资源时,那么只能等待上一个线程操作完成后才能进入临界区,这个就叫阻塞。

        非阻塞允许多个线程同时进入临界区。

死锁、饥饿、活锁

       死锁:一个线程为获取不到资源而阻塞,对已经获得的资源保持不放,而导致其他需要该资源的线程获取不到资源也被阻塞,如此循环就叫死锁。

      饥饿:指某一个或多个线程因为某种原因无法获得需要的资源,导致无法执行(线程优先级比较低)。

      活锁:一个或多个线程为获取不到资源而阻塞,并释放已经获得的资源,再次获取资源时又获得了该资源,又一次阻塞,如此反复叫活锁。例如:线程A,线程B已经分别获得了A资源和B资源,此时线程A需要B资源,线程B需要A资源,导致线程A和线程B阻塞,这是这两个线程都释放资源,线程A释放A资源,线程B释放B资源,当线程A获得资源时又一次获得了资源A,线程B又一次获得了资源B,又一次阻塞,如此反复。



并行级

1.无障碍

        是一种最弱的非阻塞调度

        自由出入临界区

        无竞争时,在有限步完成操作

        有竞争时,回滚数据(在一个线程执行过程中,另一个线程修改了这个线程已经获取的资源,那么这个线程就会回滚重新去获取该资源才能继续下一步)

2.无锁

       无障碍

       保证一个线程可以胜出(保证一个线程在竞争中能够胜出)

3.无等待

      无锁的

      所有线程必须在有限步内完成

      无饥饿的(所有线程都能执行完成) (案例写时复制:在写时拷贝一个副本,写线程就在这个副本操作,操作完成后覆盖原始数据,这样并不影响读线程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值