java

位置:IT落伍者 >> java >> 浏览文章

Java2入门经典教程 11.1 了解线程[1]


发布日期:2021年02月17日
 
Java2入门经典教程 11.1 了解线程[1]

许多程序无论大小都包含或多或少独立于其他段的代码段如果代码段可以在时间上并行执行效率会更高线程提供了这种方法当然如果像大多数人一样你的计算机只有一个处理器对任意时刻你不能执行多于一个的计算但你可以并行地处理输入/输出操作使用线程的另一个原因是在需要连续运行的程序中允许同时处理程序中其他的活动例如在同一个程序中一个连续运行的动画与另一个活动并行在web页中 Java的小应用程序在你的浏览器控制下执行线程使多个小应用程序可以同时一执行在这种情况下线程将在浏览器控制下运行的程序分成段以便它好及时运行如果你只有一个处理器你的操作系统会造成一个错觉由于在任意一个给定的时刻只有一个线程可以执行指令但这是一个非常有效的错觉为了产生动画你可以将绘制一系列静止画面的代码放入一个循环中

通常绘制图像的代码在计时器的控制一下运行因此是在一个固定的速率下执行比方说每秒当然当循环运行时同一个线程中不会发生其他的事如果你想有另一个运行的动画它必须在一个独立的线程中然后你的操作系统多任务的能力允许两个线程分一享有效的处理器时间因此允许两个动画的运行在第章我们将研究如何编写动画程序

让我们先了解一下线程工作的原理考虑一个包含三个活动的非常简单的程序

从文件中读出许多数据块

在每个数据块中执行计算

现在在线程间有不同种的竞争读文件和写结果都是在竞争因此需要有种方法当一个线程已在读取输入文件时阻止另一个线程从输入文件中读对输出文件同理这个安排有另一个现象与前边版本不同如果一个线程(比方说是threadl)读一个块(也许是bloclc )需要许多时间计算结果另一个线程(比方说是thread )可以想要读下一个块(可能是bock在thread 为block写结果前对block计算和写结果在输入的不同次序中如果你不想得到这个结果你需要做点什么解决这个问题在我们对确保线程不会沖突进行研究前让我们先看看如何创建一个线程

Java入门经典在线教程完整版

[] [] [] [] [] [] [] []

               

上一篇:Java2入门经典教程 11.1 了解线程[2]

下一篇:Java程序的性能优化StringBuffer与Vector