Java线程:线程的调度-让步
线程的让步含义就是使当前运行着线程让出CPU资源,但是然给谁不知道,仅仅是让出,线程状态回到可运行状态。
线程的让步使用Thread.yield()方法,yield() 为静态方法,功能是暂停当前正在执行的线程对象,并执行其他线程。
/**
* 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());
t2.start();
t1.start();
}
}
class MyThread1 extends Thread {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("线程1第" + i + "次执行!");
}
}
}
class MyRunnable implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("线程2第" + i + "次执行!");
Thread.yield();
}
}
}
* 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());
t2.start();
t1.start();
}
}
class MyThread1 extends Thread {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("线程1第" + i + "次执行!");
}
}
}
class MyRunnable implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("线程2第" + i + "次执行!");
Thread.yield();
}
}
}
线程2第0次执行!
线程2第1次执行!
线程2第2次执行!
线程2第3次执行!
线程1第0次执行!
线程1第1次执行!
线程1第2次执行!
线程1第3次执行!
线程1第4次执行!
线程1第5次执行!
线程1第6次执行!
线程1第7次执行!
线程1第8次执行!
线程1第9次执行!
线程2第4次执行!
线程2第5次执行!
线程2第6次执行!
线程2第7次执行!
线程2第8次执行!
线程2第9次执行!
Process finished with exit code 0
线程2第1次执行!
线程2第2次执行!
线程2第3次执行!
线程1第0次执行!
线程1第1次执行!
线程1第2次执行!
线程1第3次执行!
线程1第4次执行!
线程1第5次执行!
线程1第6次执行!
线程1第7次执行!
线程1第8次执行!
线程1第9次执行!
线程2第4次执行!
线程2第5次执行!
线程2第6次执行!
线程2第7次执行!
线程2第8次执行!
线程2第9次执行!
Process finished with exit code 0
相关推荐
Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁...
线程调度涉及到如何安排线程的执行顺序,包括但不限于: 1. **休眠**:使当前正在执行的线程暂停一段时间。 2. **优先级**:为线程设置优先级,优先级较高的线程更容易获得执行机会。 3. **让步**:主动放弃当前...
#### 七、Java线程:线程的调度 - **线程的调度策略** 包括休眠、优先级设置、让步等,这些都是控制线程执行顺序的重要手段。 1. **休眠**:通过 `Thread.sleep(long millis)` 方法使当前线程暂停执行指定的时间...
Java中的线程调度策略涉及优先级、让步、合并等概念。线程的优先级会影响线程获取CPU的时间片,但并不是绝对的。 #### 八、Java线程:线程的同步-同步方法与同步块 Java中可以通过定义同步方法或使用同步块来实现...
- Java线程调度主要依赖于操作系统的调度机制。 - 线程的优先级、让步(`yield`)、休眠(`sleep`)等方法可以影响线程的执行顺序。 - 守护线程(`Daemon Thread`)是一种特殊的线程类型,它们主要用于后台服务,如垃圾...
- **线程调度**:包括休眠、优先级调整、线程让步、合并线程以及守护线程的概念。 - **并发协作**:深入探讨了生产者-消费者模型和死锁问题,提供了理解和避免死锁的策略。 - **新特征**:Java 5引入的并发工具,如`...
本篇总结涵盖了Java多线程的基础概念、创建与启动、线程调度、同步与协作以及新特性。 **一、Java线程:概念与原理** 1. **线程与进程**: - **进程**:是操作系统资源分配的基本单位,每个进程都有独立的内存...
- 在Java中可以通过设置线程的优先级来指定线程调度的优先顺序,优先级用数字表示,范围从1到10,其中10为最高优先级。 9. 线程的异常处理: - 在多线程程序中,如果线程抛出了未捕获的异常,该线程会终止,但...
优先级高的线程在调度时理论上会得到更多执行机会,但Java的线程调度策略可能会使这种优先级关系变得复杂,尤其是在多处理器系统上。 总之,线程让步是Java多线程编程中的一种协作机制,通过`Thread.yield()`方法...
Java线程让步(Yield)是Java多线程编程中的一个重要概念,它涉及到线程调度和并发控制。在多线程环境下,线程让步意味着一个正在运行的线程主动放弃当前的时间片,以便其他就绪状态的线程有机会执行。这与线程的...
总结来说,Java线程让步是一种优化多线程环境下的并发策略,但其效果依赖于线程调度器的行为,不保证线程的执行顺序。开发者在设计多线程程序时应谨慎使用`yield()`,并结合其他同步和通信机制如`synchronized`、`...
4. **线程调度**:操作系统负责线程调度,决定哪些线程可以获取CPU时间片并执行。 5. **线程同步与互斥**:当多个线程访问共享资源时,为了防止数据不一致,需要采用同步机制,例如使用`synchronized`关键字或者显式...
2. **线程创建**:Java提供两种方式创建线程,一是直接继承Thread类并重写run()方法,二是实现Runnable接口并定义run()方法,然后通过Thread类的构造函数将Runnable对象传递进去。 3. **线程交互**:线程之间的通信...
6. **线程调度**: - 包括线程的休眠(`Thread.sleep()`)、优先级(`Thread.setPriority()`)、让步(`Thread.yield()`)、合并(线程间的协作)以及守护线程(`Thread.setDaemon(true)`),守护线程通常用于为...
5. **线程调度**: - **线程优先级**:Java中的线程有1-10的优先级,但实际调度效果依赖于操作系统。 - **线程休眠**:`Thread.sleep()`方法让当前线程暂停指定时间。 - **线程让步**:`Thread.yield()`方法让...