public class MyRunnable implements Runnable {
private int var;
public MyRunnable(int var) {
this.var = var;
}
public void run() {
// code in the other thread, can reference "var" variable
}
}
public class MainThreadClass {
public static void main(String args[]) {
MyRunnable myRunnable = new MyRunnable(10);
Thread t = new Thread(myRunnable)
t.start();
}
}
8条答案
按热度按时间92dk7w1h1#
或
或
或
或
d8tt03nd2#
创建一个实现
Runnable
接口的类。把你想运行的代码放在run()
方法中--这是你必须写的方法,以符合Runnable
接口。在你的“主”线程中,创建一个新的Thread
类,把你的Runnable
的一个示例传递给构造函数。然后在其上调用start()
。start
告诉JVM创建一个新线程,然后在该新线程中调用run
方法。请看一下Java's concurrency tutorial以开始学习。
如果你的方法会被频繁调用,那么可能不值得每次都创建一个新线程,因为这是一个代价高昂的操作。最好使用某种线程池。看看
java.util.concurrent
包中的Future
,Callable
,Executor
类。r8xiu3jd3#
在Java8中,您可以通过一行代码来完成此操作。
如果你的方法不带任何参数,你可以使用一个方法引用:
否则,可以在lambda表达式中调用该方法:
ecfsfe2w4#
如果您使用的是Java 8或更高版本,则可以使用CompletableFuture类中的
runAsync
方法如果需要返回结果,请改用
supplyAsync
kse8i1jr5#
另一个调用事物(如对话框和消息框,以及为非线程安全方法创建单独的线程)的更快选择是使用Lamba表达式
cbjzeqam6#
要在RxJava 2.x中实现这一点,您可以用途:
subscribeOn()
方法指定在哪个调度程序上运行操作- RxJava有几个预定义的调度程序,包括Schedulers.io()
(它有一个用于I/O操作的线程池)和Schedulers.computation()
(它用于CPU密集型操作)。xtupzzrd7#
以前,我编写了一个简单的实用程序类,它使用JDK5执行器服务并在后台执行特定的进程,由于doWork()通常会有一个void返回值,您可能希望使用这个实用程序类在后台执行它。
请参见this article,我在其中记录了此实用程序。
ehxuflar8#
在java8中你可以通过创建新线程的方法引用来调用它。
你也可以参考静态方法,在这种情况下你不需要使用new操作符。