黑马程序员技术交流社区
标题:
一个线程中有多个方法,如何让它执行完其中一个再去执....
[打印本页]
作者:
曾观富
时间:
2012-11-15 13:33
标题:
一个线程中有多个方法,如何让它执行完其中一个再去执....
本帖最后由 曾观富 于 2012-11-15 23:22 编辑
如题。
一个线程里面有A(),B()两个方法,我现在两个方法同时调用了,然后,它就A方法执行一行,然后再执行B方法一行,然后A再执行一行,然后B再执行一行......
我AB两个方法里面操作了同一个对象,所以算法都被弄乱了,如何让它先执行完其中一个,再去执行另一个?
作者:
张学永
时间:
2012-11-15 13:37
本帖最后由 张学永 于 2012-11-15 13:48 编辑
主函数开启两个线程的时候,你可以在两个线程之间用sleep()方法,开启一个线程之后,
让主函数等待,不去开启另一个线程。sleep一段时间后再去开启,或者也可以用
join()方法,当A执行到B.join()方法的时候,A会等待,等B线程执行完,A才会执行。这里的A、B不是指你上面的那两个A,B,
是在A线程中加入了B线程。。。这里你可以在主线程,让你要先运行的线程,加入进来。
作者:
李贺晓
时间:
2012-11-15 16:55
可以使用加锁的形式来实现的吧
作者:
张综
时间:
2012-11-15 22:42
你可以用Thread.sleep(停顿时间),这个来让一个线程睡眠,让另一个线程先执行。因为我们知道多线程是所谓的一起执行的。也就是说并不是真的一起执行,而是这个执行以下然后马上执行另一个,切换的速度非常快。感觉不出来,或者说这个切换的速度可以忽略不计,所以我们称之为并发执行。如果你想要两个方法分别执行那你可以用一个线程来控制一个方法。然后主函数里写另一个方法,启动线程,利用Thread.sleep()来控制,让他们分别执行。如果:主线程顺序调用两个方法,那么这里没有线程对象!也没有为线程对象指定任务,也没有启动线程。
作者:
程宏志
时间:
2012-11-15 23:12
这样很简单,通过Thread.sleep(),方法控制,我写个列子你看下
public class A
{
public static void main(String[] args) throws InterruptedException
{
Thread t=new B();
t.start();
Thread.sleep(500);
for(int i=0;i<10;i++)
{
System.out.print("a");
Thread.sleep(1000);
}
}
}
class B extends Thread
{
public void run()
{
for(int i=0;i<10;i++)
{
System.out.print("b");
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
通过控制sleep()方法内的时间来控制循环打印你要的结果
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2