java 线程调用_如何在Java中使用单独的线程调用方法?

问题

假设我有一个方法doWork()。如何从单独的线程(不是主线程)调用它。

#1 热门回答(107 赞)

创建一个实现Runnable接口的类。将你想要运行的代码放在run()方法中 - 这是你必须编写的方法,以符合Runnable接口。在你的"主"线程中,创建一个newThreadclass,传递构造函数的yourRunnable的实例,然后调用它.start,然后调用JVM来创建一个新的线程,然后在该新线程中调用你的run方法。

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();

}

}

如果要经常调用你的方法,那么每次创建新线程可能都不值得,因为这是一项昂贵的操作。最好使用某种线程池。看看java.util.concurrent包装中的Future,Callable,Executor类。

#2 热门回答(104 赞)

怎么样 :

Thread t1 = new Thread(new Runnable() {

public void run() {

// code goes here.

}

});

t1.start();

OR

new Thread(new Runnable() {

public void run() {

// code goes here.

}

}).start();

另外一个选择:

Executors.newSingleThreadExecutor().execute(new Runnable() {

@Override

public void run() {

myCustomMethod();

}

});

要么

Executors.newCachedThreadPool().execute(new Runnable() {

@Override

public void run() {

myCustomMethod();

}

});

#3 热门回答(44 赞)

在Java 8中,你可以使用一行代码执行此操作。

如果你的方法不带任何参数,你可以使用方法参考:

new Thread(MyClass::doWork).start();

否则,你可以在lambda表达式中调用该方法:

new Thread(() -> doWork(someParam)).start();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值