我才刚刚开始学习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的提交方法。 那会给你一些想法。

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

  1. java中static、final 和 static final之间的区别

    java中static.final 和 static final之间的区别 static可以修饰:全局属性,方法,代码块,内部类(静态内部类或嵌套内部类) 由于静态属性和方法是属于该类的所有对象的,所 ...

  2. java学习_都说Java难学,不知道具体的学习内容?全套Java学习路线送上

    首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 其中J2SE是关 ...

  3. java 虚拟机_浅谈Java虚拟机内存区

    1. Java 虚拟机内存区概述 我们在编写程序时,经常会遇到OOM(out of Memory)以及内存泄漏等问题.为了避免出现这些问题,我们首先必须对JVM的内存划分有个具体的认识.JVM将内存主 ...

  4. 高级java开发_适用于高级Java开发人员的十大书籍

    高级java开发 Java是当今最流行的编程语言之一. 有很多适合初学者的书籍. 但是对于那些使用Java进行过一段时间编程的人来说,其中有些人看起来有些简单和多余. 初学者的书没有带来新鲜有趣的想法 ...

  5. Java继承_深入理解Java继承、封装、多态的实现原理

    点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 作者:黄小斜 文章来源:微信公众号[Java技术江湖] 目录 从JVM结构开始谈多 ...

  6. groovy 使用java类_深入学习java中的Groovy 和 Scala 类

    前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一 ...

  7. java 枚举_深入理解Java枚举

    所有知识体系文章,[GitHub](https://github.com/Ziphtracks/JavaLearningmanual)已收录,欢迎Star!再次感谢,愿你早日进入大厂! https:/ ...

  8. java翻译程序_有没有java代码翻译软件?

    展开全部 没有翻译软件,但是能32313133353236313431303231363533e78988e69d8331333365646333编写翻译程序. java 代码翻译实例: 1.输入一个 ...

  9. 学javaweb要先学java吗_怎么入门Java Web,我应该先学什么?

    想要学习Java Web,JavaSE的知识肯定是少不了的 学习Java Web的第一步肯定要知道什么是servlet,什么是tomcat,然后Java Web里面还有JSP,在学习之前你也需要学习前 ...

最新文章

  1. 快速实现dNet三层架构项目图解
  2. Paper:GPT-3《 Language Models are Few-Shot Learners》的翻译与解读
  3. CCF201409-5 拼图(30分)
  4. Hibernate注解(二)之映射简单的属性
  5. 疯狂涨知识!Java多态实现原理技术总监都拍手叫好
  6. 【Spring学习笔记-MVC-17】Spring MVC之拦截器
  7. [LeetCode] Minimum Window Substring 散列映射问题
  8. 在PPT设计中如何制作有效的图表?
  9. oracle数据库sqlloader,Oracle SQL Loader(sqlldr)
  10. 思科模拟器:路由器基本配置
  11. sql server windows nt 64bit 占内存解决方法
  12. linux b类地址设24位掩码,CIDR,子网掩码以及划分子网超网
  13. MATLIB从excel表中读取数据并画出函数图像
  14. [计算机网络]计算机网络发展历程,osi7层模型,报文交换
  15. java从键盘输入任意一组数据存入数组中统计非负数个数及非负数个数
  16. 并行计算求pi值C语言,使用并行计算求圆周率π.pdf
  17. 微擎弹出确认授权获取用户头像
  18. HTMLCSS登录界面及讲解
  19. Python 正则匹配以xx开头以xx结尾的单词
  20. unity3D实现录音功能,并将真实录音时长保存至本地(不能用可私信,附可执行文件下载地址)

热门文章

  1. 关于CSS中浏览器兼容的问题总结二
  2. 20kV高精度可调高压稳压测试电源的学习与使用
  3. 盘点那些年被甲骨文前CEO埃里森炮轰过的厂商
  4. 我也成为城市达人了!
  5. 我的BIOS之行(9)-protocol的使用与创建
  6. mysql 敏感词_PHP实现的敏感词过滤方法示例
  7. msiexec使用方法-摘抄自Windows
  8. 嘉为蓝鲸携手东风集团、上汽零束再获信通院四项大奖
  9. php点赞效果代码,php点赞效果的制作代码+解析(jQuery+Ajax+PHP实现“赞”)
  10. 用星号输出字母C的图案.c