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

做网站哪家公司比较好而且不贵wordpress主题更新无法创建目录

做网站哪家公司比较好而且不贵,wordpress主题更新无法创建目录,仙桃市建设局网站,学校网站建设介绍范文注意:我们运行Java代码时,本身就有一个线程,就是所谓的“主线程”。我们下面是在此基础上,创建其他额外的线程。 目录 一.创建线程的两种基本方式 1.方式一:new Thread实例 2.方式二:使用Runnable接口配…

注意:我们运行Java代码时,本身就有一个线程,就是所谓的“主线程”。我们下面是在此基础上,创建其他额外的线程。

目录

一.创建线程的两种基本方式

1.方式一:new Thread实例

2.方式二:使用Runnable接口配合Thread类

二.lambda简化

1.创建Runnable接口时,可以使用lambda简化

2.也可以直接将lambda简化的Runnable接口,直接放到Thread类的构造函数中,从而创建出一个线程

三.分析创建线程时,方式一和方式二的区别

四.创建线程的方式三:FutureTask任务

五.结语


一.创建线程的两种基本方式

1.方式一:new Thread实例

@Slf4j(topic = "c.Test1")
public class Test01 {public static void main(String[] args) {//1.1 创建线程Thread t = new Thread() {@Overridepublic void run() {log.debug("running");}};//1.2 给线程命名t.setName("t1");//1.3 运行线程t.start();//2 主线程输出log.debug("running");}
}

运行结果:

2.方式二:使用Runnable接口配合Thread类

@Slf4j(topic = "c.Test2")
public class Test02 {public static void main(String[] args) {//1.1 创建Runnable接口Runnable runnable = new Runnable(){@Overridepublic void run() {log.debug("running");}};//1.2 new Thread实例Thread t = new Thread(runnable);//1.3 给线程起名t.setName("t1");//上面两步,可以写成Thread t = new Thread(runnable, "t1");//1.4 启动线程t.start();//2 主线程输出log.debug("running");}
}

运行结果:

二.lambda简化

1.创建Runnable接口时,可以使用lambda简化

如下图所示,这个lambda在外观上有点像前端的箭头函数。

2.也可以直接将lambda简化的Runnable接口,直接放到Thread类的构造函数中,从而创建出一个线程

运行结果:

以后我们就可以采用这种间接的方式,快速创建一个线程出来。

三.分析创建线程时,方式一和方式二的区别

①直接new Thread实例,是直接赋值Thread实例的run方法。

②而让Thread实例继承一个Runnable接口,再在该接口中定义run方法,是间接赋值Thread类的run方法。

总之,无论是方式一还是方式二,本质都是修改Thread实例的run方法而已,只不过一个是直接修改,一个是间接修改而已。

  • 方式一是把线程和任务(run方法)合并在了一起,方式二是把线程和任务分开了。
  • 使用Runnable更容易与线程池等高级API配合。
  • 使用Runnable让任务类脱离了Thread继承体系,更加灵活。

四.创建线程的方式三:FutureTask任务

@Slf4j(topic = "c.Test5")
public class Test05 {public static void main(String[] args) throws ExecutionException, InterruptedException {//创建任务FutureTask<Integer> task = new FutureTask<>(new Callable<Integer>() {@Overridepublic Integer call() throws Exception {log.debug("running");Thread.sleep(2000);return 100;}});//创建线程,让线程执行任务Thread t1 = new Thread(task, "t1");//启动线程t1.start();//在主线程,获取任务的返回值“100”log.debug("{}", task.get());//task.get()会阻塞主线程,直到获取到任务的返回值(任务执行完毕)即可}
}

运行结果:

五.结语

以上讲了三种创建线程的方式,其实就是讲了三种定义run方法的方式,告诉线程要执行什么任务而已。

三种方式分别是在Thread中直接赋值run方法、通过Runnable接口间接赋值run方法、通过FutureTask间接定义run方法。

喜欢本篇文章的话,可以留个免费的关注呦~~

http://www.dtcms.com/a/493831.html

相关文章:

  • 单产品网站模板wordpress文件介绍
  • 著名的响应式网站有哪些整合营销包括哪些内容
  • 购买一个网站域名需要多少钱网站设计师主要做什么
  • 江宁滨江网站建设整站排名优化公司
  • 宿迁北京网站建设宁波建筑公司排名
  • 西乡做网站的公司wordpress客户端制作
  • 怎样在手机上做动漫视频网站嘉兴模板开发建站
  • 东莞机电学校网站建设与管理如何修改网站ico
  • 农业网站设计房产网站模板
  • jsp网站开发登陆三河网站建设公司
  • 关于公司网站建设情况的汇报wordpress 渗透
  • 网站下载软件怎么安装如何才能看到国外的设计网站
  • 福彩网网站建设方案银川专业做网站
  • 企业网站规划书深圳营销型网站设计公司
  • 济南企业网站制作费用茶叶网站建设要求
  • 外国网页设计网站第三方网络营销平台
  • 濮阳网站建设网站网站是asp还是php
  • 网站管理规定青海住房和城乡建设部网站
  • 南宁横县网站建设推广wordpress的搭建
  • php网站开发背景介绍wordpress just
  • 合肥网站建设q479185700強网站会员系统方案
  • 宋家庄网站建设微网站建设及微信推广方案
  • 长尾关键词挖掘网站wordpress淘客 优惠券插件
  • 松山湖网站建设html网页代码完整代码
  • 建设自己的网站需要哪些步骤怎么做五合一网站
  • 傻瓜式网站开发软件成都网站建设 致尚
  • 国外免费域名网站wordpress怎么加速权限不够
  • 博罗网站设计公司校园网站建设详细的设计方案
  • 盐城专业做网站较好的公司包装设计公司浙江
  • 写作网站都有哪些网站策划及过程