在这章的两个例子中我们看到线程被启动然后竞争计算机资源因为三个线程对处理器的竟争采用不受控制的方法所以线程的输出次序混乱在程序中通常这是不希望看到的在绝大多数使用线程的例子中线程执行的方法需要被管理才能使线程彼此不产生沖突
当然在我们的例子中程序被故意构造成通过输出一个名字中途释放处理器的控制
虽然这是非常做作的但类似情况也会在现实中出现特别是在重复操作的线程中出现能够认识到当一个原始语句执行时一个线程能被中断是很重要的例如假设一个线程执行语句
i=i+
在这个语句仍在执行时线程的执行被中断是极有可能的也许存i值被取来增之后但在结果被存回i之前没有适当控制另一个访问i的线程会在这一时刻改变i的值结果是在这个线程中i没有增
两个或多个线程分享一个公用资源的地方如文件或内存块你需要决策确保一个线程不能修改另一个线程正在使用的资源当一木线程更新文件中的一个记录时而另一个线程中途检索同一个记录是带来灾难的方法管理这种情况的一个方法是使用线程中包含的同步(synchronization)
同步
同步的目标是当几个线程想访问同一个资源时确保在仟何指定时刻只能有一个线程访问它用同步管理你的线程执行有两种方法
在方法一级管理代码包括同步方法
在块一级管理代码一使用同步块
首先我们看看怎么使用同步方法
Java入门经典在线教程完整版
[] [] [] [] [] [] [] [] []