有这样一个需求:
有a()和b()两个方法。
写一个线程,要求调用a()方法的几秒种后,调用b()方法。
其中a()方法是一个循环体【while(true)】,也就是一个死循环。b()方法也是一循环体(同a()方法)。
我看了timer类,可好象不行。如何实现这个需求?

解决方案 »

  1.   

    你需要在调用b函数时再起一个线程。用Thread 或者Runnable
      

  2.   

    是有点纠结  sleep不行呀 
      

  3.   


    忘记说了,a()和b()是A类和B类里的两个方法。A、B两个类本身就继承自Thread类请给出具体的方法,谢谢!!
      

  4.   

    在a()中写Thread.sheep(1000)!然后再调用b() !不就OK了
      

  5.   


    class A extends Thread
    {
    void a(){
    while(true)
    {
    synchronized(Main.lock){
    while(Main.state != Main.A_RUNNING)
    Main.lock.wait();
    }
    //do sth here
    }
    } public void run(){
    a();
    }
    };class B extends Thread
    {
    void b(){
    while(true)
    {
    synchronized(Main.lock){
    while(Main.state != Main.B_RUNNING)
    Main.lock.wait();
    }
    //do sth here
    }
    } public void run(){
    b();
    }
    };public class Main{
    static final byte START = 0;
    static final byte A_RUNNING = 1;
    static final byte B_RUNNING = 2; static byte state = START; static Object lock = new Object(); public static void main(String[] args) throws Exception
    {
    A a = new A();
    B b = new B();
    a.start();
    b.start();
    while(true){
    //通知A运行
    state = A_RUNNING;
    synchronized(lock){
    lock.notifyAll();
    }
    Thread.sleep(10000);//休眠
    //通知B运行
    state = B_RUNNING;
    synchronized(lock){
    lock.notifyAll();
    }
    Thread.sleep(10000);//休眠
    }
    }
    }
      

  6.   

    非线程实现class A
    {
    void a(){
    while(true)
    {
    a_fun();
    }
    }
    void a_fun(){
    //do sth here
    }
    };class B
    {
    void b(){
    while(true)
    {
    b_fun();
    }
    }
    void b_fun(){
    //do sth here
    }
    };public class Main{
    public static void main(String[] args)
    {
    A a = new A();
    B b = new B();
    long time;
    while(true){
    //运行a
    time = System.currentTimeMillis()+10000;
    while(System.currentTimeMillis() < time)
    a.a_fun();
    //运行b
    time = System.currentTimeMillis()+10000;
    while(System.currentTimeMillis() < time)
    b.b_fun();
    }
    }
    }
      

  7.   


    说明还没有说清楚,调用b方法的时候,a方法要停止吗?无论哪种情况,都涉及三个线程,1是控制线程,一般就是main函数的线程,2是a方法的线程,3是b方法的线程如果要停止,那就用interrupt中断a的线程,再用start打开b的线程。如果不停止,那就是直接在开始了a线程之后几秒,开始b线程。我觉得既然是线程题,题目的意思应该是后一种情况吧
      

  8.   


    说明还没有说清楚,调用b方法的时候,a方法要停止吗?无论哪种情况,都涉及三个线程,1是控制线程,一般就是main函数的线程,2是a方法的线程,3是b方法的线程如果要停止,那就用interrupt中断a的线程,再用start打开b的线程。如果不停止,那就是直接在开始了a线程之后几秒,开始b线程。我觉得既然是线程题,题目的意思应该是后一种情况吧
      

  9.   


    这两人还真有脸瞎胡扯。写在a()里算干什么?这是会自己醒来的。符合题目要求吗?而且sleep都写错。