《Java核心技术&并发》

简介:

	读者可能已经很熟悉操作系统中的多任务:在同一时刻运行多个程序的能力。例如,在编辑或者下载邮件的同时可以打印文件。今天,人们很可能拥有多个CPU的计算机,但是,并发执行的进程数目并不是由CPU数目制约的。操作系统将CPU的时间片分配给每一个进程,给人并行处理的感觉。
	多线程程序在较低的层次上扩展了多任务的概念:一个程序可以同时执行多个任务。通常,每一个任务成为一个线程,它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序。
	那么,多进程和多线程有哪些区别呢?本质的区别在于每个进程拥有自己的一整套变量,而线程则共享数据。这听起来似乎有些风险,的确也是这样,本文稍后将可以看到这个问题。然而,贡献变量使线程之间的通信比进程之间的通信更有效、更容易。此外,在有些操作系统中,与进程相比较,线程更“轻量级”,创建、撤销一个线程比启动一个进程的开销要小得多。

一、什么是线程

	先看一个没有使用多线程的程序:
	这个程序采用不断移动位置的方式实现球跳动的动画效果,如果发现球碰到墙壁,将进行重绘。
	现象:当点击“start”按钮的时候,程序将从屏幕的左上角弹出一个球,这个球便开始弹跳。当碰到墙壁时,球将调整方向,并重新绘制面板。
	如果运行这个程序,球就会自如地来回弹跳,但是,这个程序完全控制了整个应用程序。如果你在球完成1000次弹跳之前已经感到厌倦了,并点击close按钮会发现球仍在弹跳。在球弹跳结束之前无法与程序进行交互。
	![主函数](https://img-blog.csdnimg.cn/201911110120417.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RvbmdQb19ZSQ==,size_16,color_FFFFFF,t_70)
	![BounceFrame类](https://img-blog.csdnimg.cn/20191111012122453.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RvbmdQb19ZSQ==,size_16,color_FFFFFF,t_70)
	![BallComponent类](https://img-blog.csdnimg.cn/20191111012158797.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RvbmdQb19ZSQ==,size_16,color_FFFFFF,t_70)
	![Ball类](https://img-blog.csdnimg.cn/20191111012236689.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RvbmdQb19ZSQ==,size_16,color_FFFFFF,t_70)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值