关于线程的讲解?(出自Java原著)
2008-11-05 18:35
323 查看
在java技术中,线程通常是抢占式的而不需要时间片分配进程(分配给每个线程相等的cpu时间的进程)。一个经常犯的错误是认为“抢占”就是“分配时间片”。 在Solaris平台上的运行环境中,相同优先级的线程不能相互抢占对方的cpu时间。但是,在使用时间片的windows平台运行环境中,可以抢占相同甚至更高优先级的线程的cpu时间。抢占并不是绝对的,可是大多数的JVM的实现结果在行为上表现出了严格的抢占。纵观JVM的实现,并没有绝对的抢占或是时间片,而是依赖于编码者对wait和sleep这两个方法的使用。 抢占式调度模型就是许多线程属于可以运行状态(等待状态),但实际上只有一个线程在运行。该线程一直运行到它终止进入可运行状态(等待状态)或是另一个具有更高优先级的线程变成可运行状态。在后一种情况下,底优先级的线程被高优先级的线程抢占,高优先级的线程获得运行的机会。 线程可以因为各种各样的原因终止并进入可运行状态(因为堵塞)。例如,线程的代码可以在适当时候执行Thread.sleep()方法,故意让线程中止;线程可能为了访问资源而不得不等待直到该资源可用为止。 所有可运行的线程根据优先级保持在不同的池中。一旦被堵塞的线程进入可运行状态,它将会被放回适当的可运行池中。非空最高优先级的池中的线程将获得cpu时间。 最后一个句子是不精确的,因为: (1)在大多数的JVM实现中,虽然不能保证说优先级有任何意义,但优先级看起来象是用抢占方式工作。 (2)微软windows的评价影响线程的行为,以至尽管一个处于可运行状态的优先级为5的java线程正在等待cpu时间,但是一个优先级为4的java线程却可能正在运行。 实际上,许多JVM用队列来实现池,但没有保证行为。
相关文章推荐
- 关于线程的讲解?(出自Java原著)
- 关于线程的讲解?(出自Java原著)
- Android关于AutoService、Javapoet讲解
- 关于java线程的停止问题(转载至 http://dev.21tx.com 2005年05月03日 Matrix-与Java共舞 )
- 关于进程与线程的讲解
- java高级多线程编程--关于线程的停止问题
- 关于Java线程的实现
- 关于java中的StringBuilder的线程安全问题
- java关于线程简单介绍
- 找到的关于java UUID的讲解
- 关于Java中的进程和线程的理解
- 关于Java中Daemon线程
- 关于java中getClass()和getSuperClass()的讲解
- java关于终止线程
- 一道关于java线程中断的题目,求大神指导,昨晚的阿里巴巴笔试题
- 关于java线程的一些东西
- java线程全面讲解
- Java中关于线程的总结
- 关于JAVA中线程有关问题
- 关于java.awt.datatransfer包的一些讲解