如何让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时间。该例中,优先级设置放在线程启动前。也可以在启动后进行优先级设置,以满足不同的优先级需求。
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时间。该例中,优先级设置放在线程启动前。也可以在启动后进行优先级设置,以满足不同的优先级需求。
相关文章推荐
- linux下,两个线程依次执行
- 两个线程执行生产 * 两线程执行消费 * 依次交替循环
- i++在两个线程执行100次,最终的结果是
- Java如何等待子线程执行结束
- 两个线程分别执行100次i++
- 同时执行两个线程
- Java 多线程实现的三种方法,附两个线程执行不同的输出
- 如何在表单的WebQuerySave里执行两个代理
- Java多线程,启动四个线程,两个执行加一,另外两个执行减一
- Java如何等待子线程执行结束
- 如何取消后台线程的执行
- java中按顺序执行两个线程的方法
- 【Windows8开发】异步编程进阶篇之 单线程套间(STA)及如何控制task执行上下文
- 两个线程并发执行以下代码,假设a是全局变量,那么以下输出______是不可能的?
- 两个线程同时执行
- [转]Java 如何同步顺序执行多个线程
- C#中添加三个线程同时启动执行某一方法,并依次调用某方法中的循环打印输。
- 如何让两个线程同时运行
- [导入]WinForm程序如何等待多个线程执行完后提示用户?
- 1.如果你有三个线程,分别为T1,T2,T3,如何让线程T2在线程T1之后执行,在线程T3之前执行。