Java 创建打印消息的线程
不确定我是否做对了。我需要做一个新的线程来写出一定次数的消息。我认为这到目前为止是有效的,但不确定这是否是最好的方法。然后,我需要在线程完成运行后显示另一条消息。我该怎么做?使用isAlive?我如何实现这一点Java 创建打印消息的线程,java,multithreading,Java,Multithreading,不确定我是否做对了。我需要做一个新的线程来写出一定次数的消息。我认为这到目前为止是有效的,但不确定这是否是最好的方法。然后,我需要在线程完成运行后显示另一条消息。我该怎么做?使用isAlive?我如何实现这一点 public class MyThread extends Thread { public void run() { int i = 0; while (i < 10) { System.out.println("h
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();
}
}
到现在为止,你已经走上正轨了。现在,为了显示另一条消息,当这个线程完成时,您可以从主线程调用这个线程。当您使用t.join方法时,还需要处理InterruptedException 然后,当线程t完成时,主线程将继续。因此,继续您的主线,如下所示:-
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Your Message");
当您在此处调用t.join某个特定线程(主线程)时,该线程将继续其进一步执行,只有当线程t已完成其执行时才继续执行。到目前为止,您已走上正轨。现在,为了显示另一条消息,当这个线程完成时,您可以从主线程调用这个线程。当您使用t.join方法时,还需要处理InterruptedException 然后,当线程t完成时,主线程将继续。因此,继续您的主线,如下所示:-
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Your Message");
当您在这里调用t.join到一个特定的线程main thread时,该线程将继续它的进一步执行,只有当线程t完成它的执行时。扩展线程类本身通常不是一个好的做法
您应该创建Runnable接口的实现,如下所示:
public class MyRunnable implements Runnable {
public void run() {
//your code here
}
}
MyRunnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();
并将其一部分传递给螺纹,如下所示:
public class MyRunnable implements Runnable {
public void run() {
//your code here
}
}
MyRunnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();
请检查下面的答案:扩展Thread类本身通常不是一个好的做法
您应该创建Runnable接口的实现,如下所示:
public class MyRunnable implements Runnable {
public void run() {
//your code here
}
}
MyRunnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();
并将其一部分传递给螺纹,如下所示:
public class MyRunnable implements Runnable {
public void run() {
//your code here
}
}
MyRunnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();
请在此处检查此答案,以便:这是您可以做到的
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
}
}
有关详细信息,请参阅
这就是你可以做到的
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
}
}
有关详细信息,请参阅
非常感谢@Tom加上并发包这不是唯一的方法。您可以查看@AmitD谢谢您的添加,但这是我们被赋予的特定任务,但我肯定会查看不同的方法,谢谢!非常感谢@Tom加上并发包这不是唯一的方法。您可以查看@AmitD谢谢您的添加,但这是我们被赋予的特定任务,但我肯定会查看不同的方法,谢谢!您发布的代码无法编译。您缺少右括号。如果缩进代码,这将更容易看到。为什么不将最后一条消息放在run方法的末尾?这样,消息将显示,线程将在1毫秒后完成。您发布的代码不会编译。您缺少右括号。如果缩进代码,这将更容易看到。为什么不将最后一条消息放在run方法的末尾?这样会显示消息,线程将在1毫秒后完成。为什么这不是一个好的做法?你能把原因也贴出来吗?@RohitJain:有很多答案,只是补充了一个作为更新。@BheshGurung。。是的,我知道。只是想让你的答案完整@罗希贾因:谢谢,我都没想过。给你+1:为什么这不是一个好的做法?你能把原因也贴出来吗?@RohitJain:有很多答案,只是补充了一个作为更新。@BheshGurung。。是的,我知道。只是想让你的答案完整@罗希贾因:谢谢,我都没想过。给你+1:你做了什么改变?为什么?它将如何影响输出?你能解释一下,而不是粘贴无声代码吗?我只是展示我的代码,先生,我不否认你的代码,因为我是新来的,所以我在这里向像你这样的人学习。@Abhishek。。当然,你一定会学到很多东西。但是,一般来说,我们希望在编写代码的同时,在答案中添加一些解释,以便OP能够理解您想要做什么。我不是说你的代码错了。非常好。但一个解释肯定会对OP有所帮助。这对你将来也会有帮助。你做了什么改变?为什么?它将如何影响输出?你能解释一下,而不是粘贴无声代码吗?我只是展示我的代码,先生,我不否认你的代码,因为我是新来的,所以我在这里向像你这样的人学习。@Abhishek。。当然,你一定会学到很多东西。但是,一般来说,我们希望在编写代码的同时,在答案中添加一些解释,以便OP能够理解您想要做什么。我不是说你的代码错了。非常好。但一个解释肯定会对OP有所帮助。这对你们将来也会有帮助。