咋们谈谈 Java 并发编程

本贴最后更新于 859 天前,其中的信息可能已经斗转星移

咋们谈谈 Java 并发编程

1.为什么要有并发编程?

在现在计算机硬件在高速发展,多和计算机已经成为时代的发展主流,为了提高多核 CUP 的利用率。随之提升程序的性能,如:响应时间、吞吐量、计算机资源使用率等。

2.什么是并发编程?

所谓并发编程是指在一台处理器上“同时”处理多个任务。

3.我们了解了解 Java 并发编程!

3.1 首先咋们要谈谈什么是进程、什么是线程!

进程:是正在运行程序;是系统进行资源分配调度基本单位

线程:单个线程是进程(正在运行的程序)的一个任务;是系统进行资源能够进行调度的最小单位!

进行和线程的区别

1.程,线程;

2.进程基本单位;线程最小单位;一个进程中包含多个线程;

3.默认情况下,进程之间的内存无法共享线程之间的共享父进程的内存。

3.2 咋们接下来谈谈什么是串行、并行、并发?

串行:

按序执行;第一个任务没有执行完第二个任务不能执行;

并行:

同时执行,多管齐下;在多核 CUP 下,有两个或两个以上的任务同时执行;

并发:

穿插执行,减少等待;多个任务穿插轮流执行,实质是一个 CUP 在若干个程序之间多路复用,目的就是提高有限资源的利用率

3.3 并发编程的三个核心(分工、协作、互斥)

分工:

**把一个任务分解程多个步骤(小任务),在什么时候谁完成那个任务。**任务分解和分工对于项目成败是非常关键,不过在并发领域中,分工更加重要,它直接决定了并发程序的性能。(在 Java 中为分工提供很多方法:Executor、Fork/Join、Futer;总结的设计模式:生产者-消费者、WorkerThread);

协作:

实质是一个任务完成了,如何通知后续的任务开始执行。(例如:我们经常使用的的生产者-消费者模式,当队列是满时,生产者就需要等待,当队列不满时,通知生产者开始工作;当队列空时,消费者就需要等待,当队列不空时,通知消费者开始工作);

互斥:

分工、协作主要强调的是性能,但并发程序里还有一部分关于正确性的线程安全。当多个线程访问一个共享变量时,结果往往时不能确定的。就可能导致一些问题。导致问题的只要三个主要源头是:可见性、有序性、原子性;所以 Java 引入了内存模型,模型提供了一些规则,利用规则,我们可以避免可见性问题、有序性问题、但是不能完全解决线程安全问题;解决线程安全的问题的核心还是互斥。实现互斥的核心还是“”;(Java 里的锁 synchronized、Lock),互斥的思想是:同一时间刻,只允许”一个线程“访问共享变量

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...