我刚刚开始学习java,我遇到了涉及线程的轻微障碍。我有一个静态方法,我想在自己的线程中运行,这可能吗?在python我知道它看起来像这样:
import thread;thread.start_new_thread( my_function, () );
我知道如何通过实现Runnable或扩展线程来使用非静态方法进行线程化,但这不是我想要做的。
答案 0 :(得分:9)
使用Thread
的{{1}}方法调用run
方法:
static
答案 1 :(得分:2)
以上内容会创建一个Static Method
,在另一个Thread
中执行:
public static void yourStaticMethod() {
new Thread(new Runnable(){
// This happens inside a different Thread
}).start();
}
答案 2 :(得分:2)
你需要创建一个新的线程。(据我所知)
Thread t = new Thread(){
@Override
public void run(){
method();
}
static void method(){// do stuff
}
}
//finally
t.start();
您始终可以在方法中创建一个类,并将更多参数传递给该线程。
你不需要用Thread包装Runnable。使用你喜欢的,这是一回事!
这个方法是静态的这一事实在这里并不重要。
如果静态方法确实只使用局部变量,没有对象字段或方法,那么它是线程安全的。如果它访问任何对象字段或方法,它可能不是线程安全的,具体取决于这些字段或方法的用途,在其他代码中。
您可以在静态方法或其他内容中创建新线程。这取决于你想做什么。
答案 3 :(得分:1)
如果您使用的是Java 8+,则还可以使用Java lambda表达式。像这样:
new Thread(()-> MyApp.myStaticMethod()).start();