点击查看:2015计算机等级考试二级Java入门教程章节汇总
点击查看:2015计算机等级考试二级Java入门教程第十一章汇总
11.2 管理线程
在这章的两个例子中我们看到,线程被启动,然后竞争计算机资源。因为三个线程对处理器的竟争采用不受控制的方法,所以线程的输出次序混乱。在程序中通常这是不希望看到的。在绝大多数使用线程的例子中,线程执行的方法需要被管理才能使线程彼此不产生冲突。
当然,在我们的例子中,程序被故意构造成通过输出一个名字中途释放处理器的控制。
虽然这是非常做作的,但类似情况也会在现实中出现,特别是在重复操作的线程中出现。能够认识到当一个原始语句执行时一个线程能被中断是很重要的。例如:假设一个线程执行语句:
i=i+1
在这个语句仍在执行时,线程的执行被中断是极有可能的,也许存i值被取来增1之后,但在结果被存回i之前。没有适当控制,另一个访问i的线程会在这一时刻改变i的值:结果是在这个线程中i没有增1.
两个或多个线程分享一个公用资源的地方,如文件或内存块,你需要决策确保一个线程不能修改另一个线程正在使用的资源。当一木线程更新文件中的一个记录时而另一个线程中途检索同一个记录是带来灾难的方法。管理这种情况的一个方法是使用线程中包含的同步(synchronization)
同步
同步的目标是当几个线程想访问同一个资源时,确保在仟何指定时刻只能有一个线程访问它。用同步管理你的线程执行有两种方法;
在方法一级管理代码,包括同步方法
在块一级管理代码一使用同步块
首先我们看看怎么使用同步方法。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |