java螺线_关于多线程:Java; 制作螺纹之间的区别

我才刚刚开始学习Java线程。

到目前为止,我已经看到人们通常使用2种方法来创建它们,但是我不了解它们之间的区别:

1:

new Thread() {

@Override

public void run(){

//mycode goes here;

};

}.start();

2:

new Thread(new Runnable() {

@Override

public void run(){

//mycode goes here;

}

}).start();

那么,如果没有必要,为什么人们使用new Runnable()? 它只是强制您具有run()方法,但是如果您创建线程,那么不自己创建run方法是不合逻辑的吗? 还是我错了?

但是,为什么在创建匿名线程时使用new Runnable()? 像上面的第二个例子一样? 由于我已经看到了一些教程,所以我在网上找到了。

我只是问是否有这样做的理由。

我知道也可以通过其他方式创建线程:

(我不是在谈论实现与扩展!)

3:

Thread t1 = new Thread(new MyRunnable());

4:

MyThreadClass my1 = new MyThreadClass();

检查一下这说明了为什么在某些情况下首选使用runnable。

"可运行的实现"与"扩展线程"的可能重复

我不是在问更喜欢什么,而是在问人们为什么要使用新的Runnable。 就像我的示例一样,我想知道在构造函数new Runnable中使用Thread是否有区别(我不是在谈论使用MyRunnables)。

从Java 8开始,您可以使用lambda表达式执行此操作:new Thread(() -> { *code* }).start();

输入信息。 Havent还研究了Java8的Lamba表达式,但是也看到了类似的例子。

在某些情况下,当您已经有一个Runnable实例仅在其他线程中运行时,这可能会很有用。 例如,Runnable可用于封装命令设计模式。

在您的情况下,没有理由创建Runnable,因为它不会添加任何内容。

谢谢,因为我仍在学习Java并对其进行自我编程,所以Command Design Pattern对我而言毫无意义。 但是,如果您说它在某些情况下可能有用,那么请记住:)

Basically you need to understand that, if you have to modify the

behavior of Thread then you need to extend Thread class otherwise if

you just have to run some separate threads then you need to implement

the interface Runnable.

请在此处查看更多信息:https://stackoverflow.com/a/16489176/1129313

您永远不会修改线程的行为。

@Crazyjavahacking ...我在这里读过某处,请参阅此stackoverflow.com/a/16489176/1129313

@Crazyjavahacking .....任何评论请

您没有回答问题。 他在问别的东西。

哦,真的,请不要那样,并删除您的不赞成票。

基本上就是您的权利:可能更改现有代码时为extend-创建新内容时为implement。 但是,正如Crazyjavahacking所提到的,这在谈论threadsm时没有什么用。

您可能听说过线程池;我们在哪里重用线程来处理不同的作业(读取可运行对象)。 查看threadpoolexecutor API的提交方法。 那会给你一些想法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值