当前位置: 首页 > news >正文

南宁网站设计图市场营销七大策略

南宁网站设计图,市场营销七大策略,做淘宝一样的网站有哪些,网站建设与管理 吴振峰线程创建之源 OK!咱们闲话少叙,直接进入正题,回顾一下通过实现Runnable接口,重写run方法创建线程的方式,真的可以创建一个线程吗?来看下面这段demo。 【代码示例1】 public class Test implements Runnab…

线程创建之源

OK!咱们闲话少叙,直接进入正题,回顾一下通过实现Runnable接口,重写run方法创建线程的方式,真的可以创建一个线程吗?来看下面这段demo。

【代码示例1】

public class Test  implements Runnable{public static void main(String[] args) {Test test = new Test();test.run();}@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+":"+"runnable线程");}
}

输出:

main:runnable线程

虽然这里我们实现了Runnable接口并重写了run方法,但执行结果中输出的线程却是主线程,这可我们调用普通的方法一样,仍旧依靠的主线程驱动,那怎么样创建一个线程呢?

【代码示例2】

public class Test  implements Runnable{public static void main(String[] args) {Test test = new Test();new Thread(test).start();}@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+":"+"runnable线程");}
}

输出:

Thread-0:runnable线程

这个demo中,我们在外面套了一层Thread,然后调用start方法,最终输出的结果就是一个全新的Thread-0线程,从而实现了线程的创建。

得出结论

我们继续换Callable、FutureTask、ThreadGroup、匿名内部类或Lambda表达式等类或接口,发现均无法直接创建一个线程,必须借助Thread的start();

而例如ExecutorService线程池、ForkJoin线程池、CompletableFuture类、Timer定时器类、parallelStream并行流等等,如果有去看过它们源码的小伙伴应该清楚,它们最终都依赖于Thread.start()方法创建线程。

因此,我们在这里可以大胆的得出这样的一个结论:

在Java中创建线程的方式只有一种:通过Thread.start()调用 start()方法,会启动一个线程并使线程进入就绪状态,当分配到时间片后开始运行。 start() 会执行线程的相应准备工作,然后自动执行 run() 方法的内容

线程体与线程的区别

文章写到这里,我们一起再来思考一个问题,既然Runnable和Callable接口和Thread类一样需要重写他们提供的run()/call()方法,又没有创建线程,那它们究竟做了什么呢?这个直接给出答案:他们经过重写,确定了线程体,那线程体与线程又有何区别?我们来看看文心一言怎么说。

image

总结一句话:线程体是线程的核心部分,负责执行线程的具体任务。

所以说无论是Thread中的run还是Runnable中的run,Callable中的call方法,内部所实现的都是线程需要执行的具体内容也就是线程体

总结

基于以上的分析,若我们在面试中再次遇到:“Java线程有几种创建方式?”的考题,就可以这样回答啦:

Java中创建线程的方式有很多种,在《Java技术卷》和《Java编程思想》中提供了实现Runnable、Callable接口、继承Thread类、创建线程池这四种常见方式,我们还可以通过ForkJoin线程池、CompletableFuture类、Timer定时器类、parallelStream并行流、匿名内部类或Lambda表达式等多种方式去实现,但这些都不是真正意义上的创建线程,严格意义上,Java创建线程的方式只有一种那就是通过new Thread().start()创建,Runnable、Callable接口只是重写了线程的线程体,用来确定我们线程需要执行的内容。

文章转载自:JavaBuild

原文链接:https://www.cnblogs.com/JavaBuild/p/18060227

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

http://www.yayakq.cn/news/799000/

相关文章:

  • 网站开发的话术可以自己做网站的软件
  • 搭建门户网站费用是多少深圳百度代理
  • 网站设计 站电子商务安全问题 网站权限
  • 网站有哪些类型和它的成功案例龙华app网站制作
  • 怎么用公司网站做公司域名多个建筑型专业网站有哪些
  • 哪些购物网站用php做的wordpress动态文章页模板
  • 网站开发前台开发同城信息商家的网站开发
  • 搜狐做app的网站网络营销方式可分为无站点网络营销和什么
  • 官方网站开发哪家好天津塘沽爆炸
  • 安阳网红打卡地东莞seo优化方案
  • 拉趣网站是谁做的固原微信网站建设
  • 盐城seo优化做seo网站的步骤
  • 在线做视频的网站外包公司做网站图片哪里整的
  • 百度怎么建网站wordpress 分享至微信
  • 西安做网站公司怎么样网站验证
  • 网站收录引擎公司简介ppt模板范文免费
  • 网站优化和提升网站排名怎么做计算机网站建设待遇
  • 可以做公众号的网站吗东莞市建设厅官方网站
  • 建一个c2c网站要多少钱上海招标网站
  • 小程序需要写网站建设方案书代理办公司注册大概多少钱
  • 锦州建设工程信息网站抖音做我女朋友的网站
  • 网站建设就是学淘宝吗越秀做网站
  • 深圳市门户网站建设怎么样大型网站开发 框架
  • 工程建设的招标在哪个招标网站网页制作模板田田田田田田田田田田田田田田
  • 电商网站开发技术与维护wordpress用户vip
  • 局域网内网站建设wordpress设置首页关键词
  • 个人网站可以不备案吗wordpress被js挂马
  • 织梦做的网站怎么上传视频线下教育机构
  • 晋江网站建设公司哪家好国家和城乡建设部网站
  • 定制网站对公司有什么好处免费建网站软件系统