创建线程以打印出消息

时间:2012-11-08 16:34:56

标签: java multithreading

不确定我是否正确行事。我需要创建一个新线程来写出一定次数的消息。我认为这种方法到目前为止还不确定它是否是最好的方法。然后我需要在线程完成运行后显示另一条消息。我怎么做 ?使用isAlive()?我该如何实现?

public class MyThread extends Thread {

    public void run() {
        int i = 0;
        while (i < 10) {
            System.out.println("hi");
            i++;
        }
    }

    public static void main(String[] args) {
        String n = Thread.currentThread().getName();
        System.out.println(n);
        Thread t = new MyThread();
        t.start();
    }
}

3 个答案:

答案 0 :(得分:5)

直到现在你正在走上正轨。现在,要显示另一条消息,当此线程完成时,您可以从主线程调用此线程上的Thread#join。当您使用InterruptedException方法时,您还需要处理t.join

然后当您的线程t完成时,您的主线程将继续。所以,继续这样的主线程: -

t.start();
try {
    t.join();
} catch (InterruptedException e) {
    e.printStackTrace();
}
System.out.println("Your Message"); 

当你在特定线程(这里是主线程)中调用t.join时,只有当线程t完成执行时,该线程才会继续执行。

答案 1 :(得分:1)

扩展Thread类本身通常不是一个好习惯。

您应该创建Runnable接口的实现,如下所示:

public class MyRunnable implements Runnable {

    public void run() {
        //your code here
    }
}

并将其传递给线程,如下所示:

MyRunnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();

请在此处查看此答案:Implementing Runnable vs. extending Thread

答案 2 :(得分:0)

这就是你如何做到这一点.........

class A implements Runnable
{
    public void run()
    {
    for(int i=1;i<=10;i++)
    System.out.println(Thread.currentThread().getName()+"\t"+i+"  hi");
    }
}
class join1
{
public static void main(String args[])throws Exception
    {
    A a=new A();
    Thread t1=new Thread(a,"abhi");
    t1.start();
    t1.join();
    System.out.println("hello this is me");//the message u want to display
    }
}

请参阅join()详细信息 join