创建Java线程模型并减少CPU周期

创建Java线程模型并减少CPU周期   Java运行时系统依赖于线程的很多事情,所有的类库的设计与多线程的初衷。事实上,Java使用的线程,以使整个环境是异步的。这有助于通过防止CPU周期的浪费减少低效率。   的多线程环境中的价值最好的理解相反,它的对应。单线程系统使用称为事件循环使用轮询方法。在这个模型中,单个控制线程运行在一个无限循环,轮询一个单一的事件队列来决定下一步该怎么做。一旦这种轮询机制与回报,比如说,一个信号,即网络文件已准备好被读取,然后在事件循环调度控制到适当的事件处理程序。直到这个事件处理函数返回,没有别的可以在系统中发生。这浪费CPU时间。它也可以导致程序支配系统并防止任何其他事件被处理的一个部分。一般来说,在一个单线程环境中,当一个线程块(也就是暂停执行),因为它在等待某些资源,整个程序停止运行。   还有除了咖啡多线程的好处是,在主环路/轮询机制被消除。一个线程可以暂停不停止你的程序的其他部分。例如,在空闲时间时创建一个线程读取来自网络的数据或等待用户输入,可以在其他地方使用。多线程允许动画循环进入睡眠状态,每个帧之间的第二,而不会导致整个系统暂停。当在Java程序中,只有被阻止暂停单一线程的线程块。所有其它线程继续运行。   在一些州存在   主题。一个线程可以处于运行状态。它可以是准备尽快得到CPU时间运行。挂起的线程可以被恢复,允许它拿起它离开的地方。一个线程可以等待资源时被阻塞。在任何时候,一个线程可以被终止,并立即停止其执行。一旦终止,一个线程不能被恢复。   其他线程优先级:Java资源分配给每个线程的优先级,确定如何线程应该受到尊重别人对待。线程优先级是指定一个线程的相对优先级到另一个整数。作为一个绝对的价值,优先级是没有意义的;较高优先级的线程不会运行任何比低优先级的线程快,如果它是唯一的线程运行。相反,一个线程的优先级,用于决定何时从一个正在运行的线程切换到下一个。这被称为上下文切换。决定当一个上下文切换发生的规则很简单:   一个线程可以自愿放弃控制。这是通过明确屈服,睡眠或阻塞挂起的I / O完成在这种情况下,所有其他线程进行检查,而最高优先级的线程准备运行时给出的CPU。   一个线程可以被更高优先级的线程被抢占。在这种情况下,低优先级的线程,该线程不会产生处理器仅仅是preemptedno不管是什么doingby一个更高优先级的线程。基本上,只要一个更高优先级的线程要运行,它的作用。这就是所谓的抢占式多任务。   在情况下,两个线程具有相同的优先级都在争夺CPU周期,情况就有点复杂。对于操作系统,如Windows 98,相同优先级的线程时间= round-robin的方式自动切片。对于其他类型的操作系统,相同优先级的线程必须主动控制让给他们的同龄人。如果他们没有其他线程将无法运行。   如何SYNCHRONIZ这些模块:由于引入了多线程的异步行为的程序,必须有一种方法可以让你执行同步性,当你需要它。例如,如果你想两个线程进行通信和共享复杂的数据结构,如链表,你需要一些方法来确保他们不互相冲突。也就是说,你必须阻止一个线程写入数据,而另一个线程是在阅读它的中间。为了这个目的,Java的实现对进程间同步的一种古老的模式优雅的扭曲:显示器。该显示器是第一次开车霍尔定义的控制机制。你可以把显示器的一个很小的盒子,只能容纳一个线程。一旦一个线程进入一个监视器,所有其他线程必须等待,直到该线程存在的监视器。通过这种方式,一个显示器可以用于保护共享资源的一次被操纵由一个以上的线程。   大多数多线程系统暴露显示器作为你的程序必须显式地获取和操纵对象。 Java提供了一个清洁的解决方案。没有一流的显示器;相反,每个对象都有当同步方法的对象之一是所谓的自动输入自己的隐式监视器。一旦一个线程是一个synchronized方法里面,没有其他线程可以在同一对象上调用任何其它synchronized方法。这使您能够写的很简洁明了的多线​​程代码,因为同步支持是内置于语言。   Java消息:在您将您的程序分成单独的线程,你需要定义它们将如何彼此通信。当与大多数其他语言编程时,必须依赖于操作系统来建立线程之间的通信。这当然,增加了开销。相比之下,Java提供了一个干净。低成本的方式为两个或多个线程来相互交谈,通过调用所有对象都具有预定义的方法。还有除了咖啡消息系统允许一个线程对象上输入一个同步方法,然后等待,直到其他线程明确通知它出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值