Java线程:线程的调度-优先级
与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。
线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。
在一个线程中开启另外一个新线程,则新开线程称为该线程的子线程,子线程初始优先级与父线程相同。
/**
* Java线程:线程的调度-优先级
*
* @author leizhimin 2009-11-4 9:02:40
*/
public class Test {
public static void main(String[] args) {
Thread t1 = new MyThread1();
Thread t2 = new Thread(new MyRunnable());
t1.setPriority(10);
t2.setPriority(1);
t2.start();
t1.start();
}
}
class MyThread1 extends Thread {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("线程1第" + i + "次执行!");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MyRunnable implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("线程2第" + i + "次执行!");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
* Java线程:线程的调度-优先级
*
* @author leizhimin 2009-11-4 9:02:40
*/
public class Test {
public static void main(String[] args) {
Thread t1 = new MyThread1();
Thread t2 = new Thread(new MyRunnable());
t1.setPriority(10);
t2.setPriority(1);
t2.start();
t1.start();
}
}
class MyThread1 extends Thread {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("线程1第" + i + "次执行!");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MyRunnable implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("线程2第" + i + "次执行!");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
线程1第0次执行!
线程2第0次执行!
线程2第1次执行!
线程1第1次执行!
线程2第2次执行!
线程1第2次执行!
线程1第3次执行!
线程2第3次执行!
线程2第4次执行!
线程1第4次执行!
线程1第5次执行!
线程2第5次执行!
线程1第6次执行!
线程2第6次执行!
线程1第7次执行!
线程2第7次执行!
线程1第8次执行!
线程2第8次执行!
线程1第9次执行!
线程2第9次执行!
Process finished with exit code 0
线程2第0次执行!
线程2第1次执行!
线程1第1次执行!
线程2第2次执行!
线程1第2次执行!
线程1第3次执行!
线程2第3次执行!
线程2第4次执行!
线程1第4次执行!
线程1第5次执行!
线程2第5次执行!
线程1第6次执行!
线程2第6次执行!
线程1第7次执行!
线程2第7次执行!
线程1第8次执行!
线程2第8次执行!
线程1第9次执行!
线程2第9次执行!
Process finished with exit code 0
相关推荐
Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者...
#### 七、Java线程:线程的调度 - **线程的调度策略** 包括休眠、优先级设置、让步等,这些都是控制线程执行顺序的重要手段。 1. **休眠**:通过 `Thread.sleep(long millis)` 方法使当前线程暂停执行指定的时间...
Java中的线程调度策略涉及优先级、让步、合并等概念。线程的优先级会影响线程获取CPU的时间片,但并不是绝对的。 #### 八、Java线程:线程的同步-同步方法与同步块 Java中可以通过定义同步方法或使用同步块来实现...
线程调度的优先级是决定哪些线程应该先获得执行权的重要因素,尤其对于Java这样的多线程编程环境。下面将详细讨论Java线程调度的优先级及其相关知识点。 在Java中,线程的优先级通过`java.lang.Thread`类的`set...
- Java线程调度主要依赖于操作系统的调度机制。 - 线程的优先级、让步(`yield`)、休眠(`sleep`)等方法可以影响线程的执行顺序。 - 守护线程(`Daemon Thread`)是一种特殊的线程类型,它们主要用于后台服务,如垃圾...
- Java的`Thread`类提供了设置线程优先级的方法,如`setPriority()`,但优先级并不保证绝对的执行顺序,只能影响调度概率,实际执行顺序依赖于JVM和操作系统。 7. **`Thread.yield()`**: - `Thread.yield()`方法...
在这个压缩包中,我们关注的是Nachos如何实现线程管理,包括线程ID、线程数量限制以及基于优先级的调度算法。让我们逐一探讨这些主题。 首先,线程ID是操作系统中每个线程的独特标识符,类似于进程的PID。在Nachos...
- Java线程具有优先级属性,范围从1(最低)到10(最高),默认值为5。高优先级的线程在调度时会被优先考虑执行。 #### 三、线程间的同步与通信 - **同步机制:** - 使用`synchronized`关键字来实现线程同步,它...
Java中的线程调度有两种策略:抢占式调度和合作式调度。Java采用抢占式调度,优先级高的线程更有可能获得CPU执行时间。 2. 获取和设置优先级 - `getPriority()`:返回线程的优先级,范围是1(MIN_PRIORITY)到10...
多线程中的优先级是影响线程调度的重要因素。Java线程有三个内置的优先级:MIN_PRIORITY(最低优先级)、NORM_PRIORITY(正常优先级)和MAX_PRIORITY(最高优先级)。默认情况下,新创建的线程优先级与父线程相同,...
- 在Java中可以通过设置线程的优先级来指定线程调度的优先顺序,优先级用数字表示,范围从1到10,其中10为最高优先级。 9. 线程的异常处理: - 在多线程程序中,如果线程抛出了未捕获的异常,该线程会终止,但...
本篇总结涵盖了Java多线程的基础概念、创建与启动、线程调度、同步与协作以及新特性。 **一、Java线程:概念与原理** 1. **线程与进程**: - **进程**:是操作系统资源分配的基本单位,每个进程都有独立的内存...
这个例子可以帮助我们理解线程调度的工作方式以及优先级如何影响线程执行的顺序。 为了实现这个示例,我们需要创建多个线程,每个线程代表一匹马,然后设置不同的线程优先级。在Java中,可以使用`Thread`类的`set...
然而,这并不意味着高优先级的线程一定会先执行或者执行频率更高,因为线程调度是由Java虚拟机(JVM)和操作系统的线程调度策略共同决定的。 在Java中,线程的优先级由`java.lang.Thread`类中的`Priority`枚举表示...
- Java中的线程调度是由操作系统完成的,但Java也提供了一些方法来影响线程的执行顺序。 - **`sleep(long millis)`**:使当前正在执行的线程暂停执行指定时间。 - **`yield()`**:建议当前线程放弃CPU时间片,重新...
线程的优先级越高,其在CPU调度中获得执行的机会越大。 在VC++中,我们可以使用Windows API函数SetThreadPriority()来改变线程的优先级。这个函数接受一个参数,即线程句柄和一个表示优先级的整数值。例如,我们...
- **线程调度**:包括休眠、优先级调整、线程让步、合并线程以及守护线程的概念。 - **并发协作**:深入探讨了生产者-消费者模型和死锁问题,提供了理解和避免死锁的策略。 - **新特征**:Java 5引入的并发工具,如`...