`
xiasheng
  • 浏览: 70843 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

线程的调度—让步

阅读更多
线程的让步含义就是使当前运行着线程让出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的线程调度策略可能会使这种优先级关系变得复杂,尤其是在多处理器系统上。 总之,线程让步是Java多线程编程中的一种协作机制,通过`Thread.yield()`方法...

    java 线程让步(Yield)

    Java线程让步(Yield)是Java多线程编程中的一个重要概念,它涉及到线程调度和并发控制。在多线程环境下,线程让步意味着一个正在运行的线程主动放弃当前的时间片,以便其他就绪状态的线程有机会执行。这与线程的...

    Java线程让步_动力节点Java学院整理

    总结来说,Java线程让步是一种优化多线程环境下的并发策略,但其效果依赖于线程调度器的行为,不保证线程的执行顺序。开发者在设计多线程程序时应谨慎使用`yield()`,并结合其他同步和通信机制如`synchronized`、`...

    Java多线程编程总结

    Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁...

    Java线程让步yield用法实例分析

    Java线程让步yield用法是一种线程调度机制,允许当前线程让步给其他线程,以实现线程之间的协作和同步。yield()方法是一个和sleep()方法有点类似的方法,它是Thread类提供的一个静态方法,它也可以让当前正在执行的...

    详解Java中的线程让步yield()与线程休眠sleep()方法

    然而,`yield()`并不保证其他线程能够立即获得执行权,因为调度行为由操作系统决定。在上面的示例中,`ThreadA`线程在`i`能被4整除时调用`yield()`,但观察运行结果,我们可以看到`Threadt1`并没有立刻切换到`Thread...

    Java多线程教程资料(强烈推荐).docx

    本文档提供了 Java 多线程编程的详细教程,涵盖了多线程的概念、原理、创建、启动、同步、锁、线程池、线程状态转换、线程交互、线程调度、volatile 关键字、信号量、阻塞队列、条件变量等知识点。 一、Java 多线程...

    第9章多线程第9章多线程第9章多线程第9章多线程第9章多线程第9章多线程

    不过,线程调度策略可能因操作系统而异,因此优先级并不总是保证线程的执行顺序。 9.8 线程同步 为了防止多个线程同时访问共享资源导致数据不一致,Java提供了多种同步机制,如`synchronized`关键字、`wait()`、`...

    java多线程笔记

    线程调度包括多种策略,如休眠(`sleep()`),通过指定时间使线程暂停;优先级(`setPriority()`),允许为线程设置优先级以影响调度;让步(`yield()`),让当前运行的线程暂停,给其他线程执行机会;合并(线程...

    Java-多线程教学文档

    Java线程调度包括线程的休眠、优先级、让步、合并和守护线程等策略。线程优先级可以调整线程执行的相对顺序,但不保证绝对的执行顺序。守护线程是一种服务线程,当所有非守护线程结束时,JVM会退出,即使仍有守护...

    java基本教程之线程让步 java多线程教程

    `run()`方法中,`t1`每打印4个数字就会调用一次`yield()`,理论上期望`t1`和`t2`交替执行,但实际运行结果可能并不完全按照预期,因为`yield()`的效果依赖于操作系统的线程调度策略。 ```java // YieldTest.java ...

    Java多线程运算集合

    - Java线程调度主要依赖于操作系统的调度机制。 - 线程的优先级、让步(`yield`)、休眠(`sleep`)等方法可以影响线程的执行顺序。 - 守护线程(`Daemon Thread`)是一种特殊的线程类型,它们主要用于后台服务,如垃圾...

    操作系统线程通信课程设计

    9. **死锁与活锁**:在并发环境中,线程可能会陷入死锁(相互等待对方释放资源)或活锁(双方都尝试让步但无法继续执行)。避免和检测死锁是多线程设计的重要部分。 在课程设计中,你可能会编写`thread.doc`文档来...

    Java多线程编程经验

    线程调度涉及到如何安排线程的执行顺序,包括但不限于: 1. **休眠**:使当前正在执行的线程暂停一段时间。 2. **优先级**:为线程设置优先级,优先级较高的线程更容易获得执行机会。 3. **让步**:主动放弃当前...

    Java基础笔记-8-16

    线程休眠、线程让步、线程优先级的相关内容。其中线程休眠中重点...线程部分重点学习yield()方法,需要注意的是调用该方法让线程暂停后,系统的线程调度器会重新调度一次,优先级相同或者优先级高的线程可能会先执行

    第7章 多线程程序设计

    线程的优先级也是线程调度的重要因素,不同的优先级决定了线程被CPU调度的机会。 【线程的创建】 在Java中,创建线程主要有两种方式: 1. 继承Thread类:创建一个新的类,继承自Thread类,然后重写run()方法。当...

    java多线程编程总结

    #### 七、Java线程:线程的调度 - **线程的调度策略** 包括休眠、优先级设置、让步等,这些都是控制线程执行顺序的重要手段。 1. **休眠**:通过 `Thread.sleep(long millis)` 方法使当前线程暂停执行指定的时间...

    java线程文档大全

    4. **线程合并与让步**:join()方法用于合并线程,让当前线程等待指定线程结束后再继续执行。yield()方法则是让当前线程暂停,让其他同优先级的线程有机会执行。 5. **守护线程(Daemon)**:守护线程是一种特殊的...

    Java多线程编程的Java中的线程.docx

    Java的Thread类提供了设置线程优先级的方法,如`setPriority(int)`,但实际调度策略依赖于操作系统的线程调度器,优先级高的线程并不一定优先执行。 总结:Java多线程编程是构建高效并发应用程序的关键,它涉及到...

Global site tag (gtag.js) - Google Analytics