Java高并发程序设计笔记1之重要概念

几个重要的概念 

 同步(synchronous)和异步(asynchronous) 


同步异步相对系统调用来讲的,异步就是单起另一个线程来运行任务,不影响调用的方法继续执行

 并发(Concurrency)和并行(Parallelism) 


单核CPU只能并发,也就是一会做这个一会做那个,并行可以理解为一起执行

 临界区 – 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每一次,只能有一个线程 使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。 


 阻塞(Blocking)和非阻塞(Non-Blocking) – 阻塞和非阻塞通常用来形容多线程间的相互影响。比如一个线程占用了临界区资源,那么其它所有需要 这个资源的线程就必须在这个临界区中进行等待,等待会导致线程挂起。这种情况就是阻塞。此时,如 果占用资源的线程一直不愿意释放资源,那么其它所有阻塞在这个临界区上的线程都不能工作。 – 非阻塞允许多个线程同时进入临界区 


死锁(Deadlock)、饥饿(Starvation)和活锁(Livelock)



并发级别 

– 阻塞 

(当一个线程进入临界区后,其他线程必须等待 )

– 无障碍

无障碍是一种最弱的非阻塞调度 – 自由出入临界区 – 无竞争时,有限步内完成操作 – 有竞争时,回滚数据 )

– 无锁 

(是无障碍的 – 保证有一个线程可以胜出 
 
 while (!atomicVar.compareAndSet(localVar, localVar+1))

  { localVar = atomicVar.get(); 

}   )

– 无等待 
( 无锁的 – 要求所有的线程都必须在有限步内完成 – 无饥饿的 )


有关并行的2个重要定律 

 Amdahl定律(阿姆达尔定律) 


 Gustafson定律(古斯塔夫森) 




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值