您的位置:首页 > 其它

如何让A、B两个线程依次执行?

2018-02-26 15:22 246 查看
第一种方法:使用join
join()方法使得一个线程等待另外一个线程结束后再执行。例如,一个GUI (或者其他线程)使用join()方法等待一个子线程执行完毕:
CompleteCalcThread t = new CompleteCalcThread();
t.start();
// 做一会儿其他的事情
// 然后等待
t.join();
// 使用计算结果……
join()方法有三种格式:
● void join():等待线程执行完毕。
● void join(long timeout):最多等待某段时间让线程完成。
● void join(long milliseconds, int nanoseconds):最多等待某段时间(毫秒+纳秒),让线程完成。
第二种:设定优先级
线程可以设定优先级,高优先级的线程可以安排在低优先级线程之前完成。一个应用程序可以通过使用线程中的setPriority(int)方法来设置线程的优先级大小。
对于多线程程序,每个线程的重要程度是不尽相同的,如多个线程在等待获得CPU时间时,往往需要优先级高的线程优先抢占到CPU时间得以执行;又如多个线程交替执行时,优先级决定了级别高的线程得到CPU的次数多一些且时间长一些。这样,高优先级的线程处理的任务效率就高一些
Java中,线程的优先级从低到高以整数1~10表示,共分为10级。设置优先级是通过调用线程对象的setPriority()方法来进行的。设置优先级的语句为
Thread threadone=new Thread();
// 用Thread类的子类创建线程
Thread threadtwo=new Thread();
threadone.setPriority(6);
// 设置threadone的优先级为6
threadtwo.setPriority(3);
// 设置threadtwo的优先级为3
threadone.start(); threadtwo.start();
// strat()方法启动线程
这样,线程threadone将会优先于线程threadtwo执行,并将占有更多的CPU时间。该例中,优先级设置放在线程启动前。也可以在启动后进行优先级设置,以满足不同的优先级需求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: