美文网首页
Java高并发实战-01

Java高并发实战-01

作者: 看不懂我的错 | 来源:发表于2018-03-30 16:20 被阅读0次

为什么需要写并行的代码?

-业务要求

-性能

怎么在串行的程序当中且执行并行?

并行跟多线程是同一个概念吗?

为什么不用进程?

-进程开销比较大,所以用线程。

-多线程性能比较好。

任务调度是什么?

并行有什么缺点:

-并行的代码比较难维护。

为什么需要并行?

-单核CUP发展到了瓶颈,现在往多核CUP发展。

-硬件设计者无计可施了,要靠软件并行解决。

几个重要的概念

1、同步(synchronous)和异步(asynchronous)

同步的话,就是做完一件事再做另外一件事。

异步的话,就是做完A事情,告诉别人去B事情,自己跑回来做C事情。B事情和C事情同时都在做。

2、并发(Concurrency)和并行(Parallelism)

3、临界区

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

4、阻塞(Blocking)和非阻塞

-阻塞:比如一个线程占用了临界区资源,那么其他所有需要这个资源的线程就必须在这个临界区中进行等待,等待会导致线程挂起(?)。此时如果占用资源的线程一直不愿意释放资源,那么其他所有阻塞在这个临界区上的线程都不能工作。(这不就是占着茅坑不拉屎吗)

-非阻塞:允许多个线程同时进入临界区。(如果同时多个人进去厕所,那该多恐怖?其实也没什么,也试过跟哥们一起上厕所啦~)

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

饥饿就是有的线程永远无法执行。

6、阻塞级别

阻塞-当一个线程进入临界区,其他线程必须在临界区外等待。(悲观)

(非阻塞)无障碍-最弱的非阻塞调度,自由出去临界区,无竞争时,有限步内完成操作,有竞争时,回滚数据(乐观)

(非阻塞)无锁-是无障碍的。保证有一个线程可以胜出。

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

两个定律:

·Amdahl定律

-定义了串行系统并行化后的加速比的计算公式和理论上限

在CPU合理的情况下,适当调整串行比例。

-加速比定义:加速比=优化前系统耗时/优化后系统耗时

加速比=优化前系统耗时/优化后系统耗时=500/400=1.25

·Gustafson定律(古斯塔夫森)

-说明处理器个数,串行比例和加速比之间的关系

在串行比例合理的情况下,拼命加CUP就ok了

相关文章

  • 后端好书阅读与推荐

    实战Java高并发程序设计 实战Java高并发程序设计 (豆瓣)https://book.douban.com/s...

  • Java高并发--CPU多级缓存与Java内存模型

    Java高并发--CPU多级缓存与Java内存模型 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的...

  • Java高并发 -- 并发扩展

    Java高并发 -- 并发扩展 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 死锁 死锁是指...

  • Java高并发实战-01

    为什么需要写并行的代码? -业务要求 -性能 怎么在串行的程序当中且执行并行? 并行跟多线程是同一个概念吗? 为什...

  • Java高并发--AQS

    Java高并发--AQS 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 AQS是Abstra...

  • Java并发 - Future模式

    标签:原创 Java 并发 更多Java并发实战内容,请参考Java并发 - 并发编程实战 理解Future 关于...

  • Java高并发 -- 线程池

    Java高并发 -- 线程池 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 在使用线程池后,...

  • Java高并发--安全发布对象

    Java高并发--安全发布对象 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 发布对像:使一...

  • Java高并发--消息队列

    Java高并发--消息队列 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 举个例子:在购物商...

  • Java高并发--线程安全策略

    Java高并发--线程安全策略 主要是学习慕课网实战视频《Java并发编程入门与高并发面试》的笔记 不可变对象 发...

网友评论

      本文标题:Java高并发实战-01

      本文链接:https://www.haomeiwen.com/subject/juvbcftx.html