如果一个线程想让另一个线程不能执行,它对第二个线程调用yield()方法,能实现吗?
哪位高手讲解一下啊,谢谢!

解决方案 »

  1.   


    package com.luowei.chapter16;//等待线程终止---把要等待的线程放在本线程中,只有当等待线程执行完,才执行本线程
    //线程1放在线程2中,在线程2中设置线程1.join(),意味着只有线程1执行完,线程2才能执行.join()后面的代码
    public class TestJoin {
    public static void main(String[] args) {
    MyRunner1 r = new MyRunner1();
    Thread t = new Thread(r);
    t.start();
    try {
    t.join();// 等待该线程终止
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    for (int i = 0; i < 50; i++) {
    System.out.println("主线程:" + i);
    }
    }
    }class MyRunner1 implements Runnable {
    public void run() {
    for (int i = 0; i < 50; i++) {
    System.out.println("SubThread:" + i);
    }
    }
    }
      

  2.   

    yield(),指的是当前线程让出CPU使用权进入就绪状态,给其他线程运行的机会,至于到底哪个线程运行,完全取决于你的操作系统和JVM,具体一些就是和你的线程调度器有关!
      

  3.   

    yield()是放弃当前线程的CUP使用权给同等优先级或较高优先级的线程,进入等待,与wait()有所不同,wait()是放弃当前线程的CUP使用权给某一线程(有JVM决定),进入等待。想让a线程在b线程执行时停止,可在a线程中用b.join(),则a会等待b执行完再执行。