Java核心内库-线程-并行和并发

来源:互联网 发布:手机节拍器软件 编辑:程序博客网 时间:2024/06/05 07:47

Java核心内库-线程-并行和并发

引子:前面讲到程序的运行流程的时候,说程序在没有流程控制前提下,代码都是从上而下逐行执行的

需求:现在需要设计一个程序想要完成边运行游戏边播放歌曲的功能,怎么设计?

并发和并行是即相似又有区别:

并行:指两个或多个事件在同一时刻发生

并发:指两个或多个事件在同一时间段内发生.

在操作系统中,在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但是单CPU系统中,每一时刻却仅能有一道程序执行(时间片),故微观上这些程序只能是分时地交替执行.

例若计算机系统中有多个CPU,则这些可以并发执行的程序便可被分配到多个处理器上,实现多任务并行执行,即利用每个处理器来处理一个可并发执行的程序,这样,多个程序便可以同时执行,因为是微观的,所以大家在使用电脑的时候感觉就是多个程序是同时执行的. 所以,大家买电脑的时候喜欢买”核”多的,其原因就是”多核处理器”电脑可以并行的处理多个程序,从而提高了电脑的运行效率

单核处理器的计算机肯定是不能并行的处理多个任务的,只能是多个任务在单个CPU上并发运行.同理,线程也是一样的,从宏观角度上理解线程是并行运行的,但是从微观角度上分析却是串行运行的,即一个线程一个线程的运行,当系统只有一个CPU时,线程会以某种顺序执行多个线程,我们把这种情况称之为线程调度.


时间片即CPU分配给各个程序的时间.

多线程优势:

多线程作为一种多任务,并发的工作方式,当然有其存在的优势:

(1)进程之前不能共享内存,而线程之间享有内存(堆内存)则很简单

(2)系统创建进程时需要为该进行重新分配系统资源,创建线程则代价小很多,因此实现多任务并发线程效率更高

(3)Java语言本身内置多线程功能的支持,而不是单纯的作为底层系统的调度方式,从而简化了多线程编程.

--------

CS游戏/单行道和多行道

-------------------

多线程下载,可以理解为一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道,当服务器提供下载任务时,使用下载的共享宽带,在优先级相同的情况下,总服务器会对总下载线程进行平均分配.不难理解,如果你线程多的话,那下载的越快.现流行的下载软件都支持多线程.

多线程是为了同步完成多项任务,不是为了提供程序运行的效率.而是通过提高资源使用效率来提高系统的效率.所以现在大家买电脑的时候,也应该看看CPU的线程数.

Java操作进程:

在java代码中如何去运行一个进程(简单讲解,获取进程中的数据IO). 方式一:Runtime类的exec方法:

方式二:ProcessBuilder的start方法

对于学习有困难不知道如何提升自己可以加扣:578024144进行交流得到帮助,获取学习资料


0 0
原创粉丝点击