有这样一个需求:
有a()和b()两个方法。
写一个线程,要求调用a()方法的几秒种后,调用b()方法。
其中a()方法是一个循环体【while(true)】,也就是一个死循环。b()方法也是一循环体(同a()方法)。
我看了timer类,可好象不行。如何实现这个需求?
有a()和b()两个方法。
写一个线程,要求调用a()方法的几秒种后,调用b()方法。
其中a()方法是一个循环体【while(true)】,也就是一个死循环。b()方法也是一循环体(同a()方法)。
我看了timer类,可好象不行。如何实现这个需求?
忘记说了,a()和b()是A类和B类里的两个方法。A、B两个类本身就继承自Thread类请给出具体的方法,谢谢!!
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);//休眠
}
}
}
{
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();
}
}
}
说明还没有说清楚,调用b方法的时候,a方法要停止吗?无论哪种情况,都涉及三个线程,1是控制线程,一般就是main函数的线程,2是a方法的线程,3是b方法的线程如果要停止,那就用interrupt中断a的线程,再用start打开b的线程。如果不停止,那就是直接在开始了a线程之后几秒,开始b线程。我觉得既然是线程题,题目的意思应该是后一种情况吧
说明还没有说清楚,调用b方法的时候,a方法要停止吗?无论哪种情况,都涉及三个线程,1是控制线程,一般就是main函数的线程,2是a方法的线程,3是b方法的线程如果要停止,那就用interrupt中断a的线程,再用start打开b的线程。如果不停止,那就是直接在开始了a线程之后几秒,开始b线程。我觉得既然是线程题,题目的意思应该是后一种情况吧
这两人还真有脸瞎胡扯。写在a()里算干什么?这是会自己醒来的。符合题目要求吗?而且sleep都写错。