gpt4 book ai didi

java - 如何使用线程运行类的方法

转载 作者:行者123 更新时间:2023-12-01 18:28:46 25 4
gpt4 key购买 nike

如果我执行以下操作,我将能够创建一个对象作为线程并运行它。

class ThreadTest
{
public static voic main(String[] args)
{
HelloThread hello = new HelloThread();
Thread t = new Thread(hello);
t.start();
}
}

class HelloThread extends Thread
{
public void run()
{
System.out.println(" Hello ");
}
}

现在,如果我的 HelloThread 类有另一个方法调用 runThisPlease(),我们应该如何使用线程运行它?

示例:

class HelloThread extends Thread
{
public void run()
{
System.out.println(" Hello ");
}

public void runThisPlease(String input)
{
System.out.println (" Using thread on another class method: " + input );
}
}

Que:当我尝试Thread t = new Thread(hello.runThisPlease());时,它不起作用。那么我们如何使用线程调用方法runThisPlease()呢?

编辑: runThisPlease() 方法中需要参数;

最佳答案

在java 8中你可以使用

Thread t = new Thread(hello::runThisPlease);

hello::runThisPlease 将转换为 Runnable,其 run 方法调用 hello.runThisPlease();

<小时/>

如果你想调用一个方法,需要参数,例如System.out.println,您当然也可以使用普通的 lambda 表达式:

final String parameter = "hello world";
Thread t = new Thread(() -> System.out.println(parameter));
<小时/>

如果您使用java版本<8,您当然可以将方法引用/lambda表达式替换为扩展Runnable的匿名内部类(据我所知,这就是java8编译器所做的),请参阅其他答案。

但是,您也可以使用扩展Thread的匿名内部类:

final HelloThread hello = //...
Thread t = new Thread() {
@Override
public void run() {
hello.runThisPlease();
}
};

关于java - 如何使用线程运行类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25059688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com