首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

线程优先的有关问题

2013-04-05 
线程优先的问题我有两个方法 fun1和fun2,在fun1中调用了fun2,在fun2中开了一个线程(很耗时间的线程),我现

线程优先的问题

我有两个方法 fun1和fun2,在fun1中调用了fun2,在fun2中开了一个线程(很耗时间的线程),我现在想让fun2运行完了之后,再继续运行fun1,应该怎么做?求指点。
如下代码:
我要的输出结果为:
fun2
fun2
fun1
应该怎么做?


package thread;

public class ThTest {

void fun1() {
fun2();
System.out.println("fun1");
}
void fun2() {
new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 2; i++) {
System.out.println("fun2");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}).start();

}

public static void main(String[] args) {
ThTest th = new ThTest();
th.fun1();
}
}



[解决办法]

void fun2() {
    Thread t = new Thread(new Runnable() {
            public void run() {
                for (int i = 0; i < 2; i++) {
                    System.out.println("fun2");
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
 
        });
    t.start();
    try{
    t.join();
    }catch(Exception e){
    e.printStackTrace();
    }
    }
 

[解决办法]
引用:
Java code?1234567891011121314151617181920212223void fun2() {        Thread t = new Thread(new Runnable() {            public void run() {                for (int i = 0; i < 2; i++) {     ……


线程优先的有关问题
join() 方法:它能够使调用该方法的线程在此之前执行完毕。

热点排行