线程的让步含义就是使当前运行着线程让出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();
}
}
}
线程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
分享到:
相关推荐
优先级高的线程在调度时理论上会得到更多执行机会,但Java的线程调度策略可能会使这种优先级关系变得复杂,尤其是在多处理器系统上。 总之,线程让步是Java多线程编程中的一种协作机制,通过`Thread.yield()`方法...
Java线程让步(Yield)是Java多线程编程中的一个重要概念,它涉及到线程调度和并发控制。在多线程环境下,线程让步意味着一个正在运行的线程主动放弃当前的时间片,以便其他就绪状态的线程有机会执行。这与线程的...
总结来说,Java线程让步是一种优化多线程环境下的并发策略,但其效果依赖于线程调度器的行为,不保证线程的执行顺序。开发者在设计多线程程序时应谨慎使用`yield()`,并结合其他同步和通信机制如`synchronized`、`...
Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁...
Java线程让步yield用法是一种线程调度机制,允许当前线程让步给其他线程,以实现线程之间的协作和同步。yield()方法是一个和sleep()方法有点类似的方法,它是Thread类提供的一个静态方法,它也可以让当前正在执行的...
然而,`yield()`并不保证其他线程能够立即获得执行权,因为调度行为由操作系统决定。在上面的示例中,`ThreadA`线程在`i`能被4整除时调用`yield()`,但观察运行结果,我们可以看到`Threadt1`并没有立刻切换到`Thread...
本文档提供了 Java 多线程编程的详细教程,涵盖了多线程的概念、原理、创建、启动、同步、锁、线程池、线程状态转换、线程交互、线程调度、volatile 关键字、信号量、阻塞队列、条件变量等知识点。 一、Java 多线程...
不过,线程调度策略可能因操作系统而异,因此优先级并不总是保证线程的执行顺序。 9.8 线程同步 为了防止多个线程同时访问共享资源导致数据不一致,Java提供了多种同步机制,如`synchronized`关键字、`wait()`、`...
线程调度包括多种策略,如休眠(`sleep()`),通过指定时间使线程暂停;优先级(`setPriority()`),允许为线程设置优先级以影响调度;让步(`yield()`),让当前运行的线程暂停,给其他线程执行机会;合并(线程...
Java线程调度包括线程的休眠、优先级、让步、合并和守护线程等策略。线程优先级可以调整线程执行的相对顺序,但不保证绝对的执行顺序。守护线程是一种服务线程,当所有非守护线程结束时,JVM会退出,即使仍有守护...
`run()`方法中,`t1`每打印4个数字就会调用一次`yield()`,理论上期望`t1`和`t2`交替执行,但实际运行结果可能并不完全按照预期,因为`yield()`的效果依赖于操作系统的线程调度策略。 ```java // YieldTest.java ...
- Java线程调度主要依赖于操作系统的调度机制。 - 线程的优先级、让步(`yield`)、休眠(`sleep`)等方法可以影响线程的执行顺序。 - 守护线程(`Daemon Thread`)是一种特殊的线程类型,它们主要用于后台服务,如垃圾...
9. **死锁与活锁**:在并发环境中,线程可能会陷入死锁(相互等待对方释放资源)或活锁(双方都尝试让步但无法继续执行)。避免和检测死锁是多线程设计的重要部分。 在课程设计中,你可能会编写`thread.doc`文档来...
线程休眠、线程让步、线程优先级的相关内容。其中线程休眠中重点...线程部分重点学习yield()方法,需要注意的是调用该方法让线程暂停后,系统的线程调度器会重新调度一次,优先级相同或者优先级高的线程可能会先执行
线程的优先级也是线程调度的重要因素,不同的优先级决定了线程被CPU调度的机会。 【线程的创建】 在Java中,创建线程主要有两种方式: 1. 继承Thread类:创建一个新的类,继承自Thread类,然后重写run()方法。当...
4. **线程合并与让步**:join()方法用于合并线程,让当前线程等待指定线程结束后再继续执行。yield()方法则是让当前线程暂停,让其他同优先级的线程有机会执行。 5. **守护线程(Daemon)**:守护线程是一种特殊的...
Java的Thread类提供了设置线程优先级的方法,如`setPriority(int)`,但实际调度策略依赖于操作系统的线程调度器,优先级高的线程并不一定优先执行。 总结:Java多线程编程是构建高效并发应用程序的关键,它涉及到...