相关疑难解决方法(0)

Java中的"实现Runnable"与"扩展线程"

从我在Java中使用线程的时间开始,我发现了这两种编写线程的方法:

implements Runnable:

public class MyRunnable implements Runnable {
    public void run() {
        //Code
    }
}
//Started with a "new Thread(new MyRunnable()).start()" call
Run Code Online (Sandbox Code Playgroud)

或者,用extends Thread:

public class MyThread extends Thread {
    public MyThread() {
        super("MyThread");
    }
    public void run() {
        //Code
    }
}
//Started with a "new MyThread().start()" call
Run Code Online (Sandbox Code Playgroud)

这两个代码块有什么显着差异吗?

java multithreading runnable implements java-threads

2023
推荐指数
30
解决办法
67万
查看次数

重载Thread.start()

假设我有一个扩展Thread的类.

所以从目前为止我所知道的:

  • run()直接调用时,该方法被视为普通方法,并且不会导致JVM为其创建新线程.

  • 为了让它按预期工作,start()必须调用该run()方法,然后在某些操作系统暗淡的juju魔法发生之后调用该方法.

我的问题是:

是否有人可以超载start()/run()并保持正常行为?

注意:你错误的好奇心是愚蠢的,不需要粗鲁.

java multithreading

1
推荐指数
1
解决办法
1867
查看次数

创建线程以打印出消息

不确定我是否正确行事.我需要创建一个新线程来写出一定次数的消息.我认为这种方法到目前为止还不确定它是否是最好的方法.然后我需要在线程完成运行后显示另一条消息.我怎么做 ?使用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();
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading

1
推荐指数
1
解决办法
1712
查看次数