千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 创建线程有几种不同的方式?你喜欢哪一种?为什么?

创建线程有几种不同的方式?你喜欢哪一种?为什么?

来源:千锋教育
发布人:qyf
时间: 2022-06-07 16:50:00 1654591800

java培训

  创建线程有几种不同的方式?

  1. 集成Thread类,重写run方法。一个线程(对象)只能够执行一次start()

  2. 实现Runnable接口,并重写里面的run方法。需要再次用Thread类包装后才能调用start方法。

  3. 实现callable接口,重写call方法,有返回值,并结合Future实现

  4. 使用实现了Executor接口的ThreadPoolExecutor来创建线程池

  你喜欢哪一种?为什么?

  一般情况下,常见的是第二种。

  Runnable接口有如下好处:

  1. 避免点继承的局限,一个类可以继承多个接口。

  2. 适合于资源的共享

  我们聊聊看

  ①继承Thread类(真正意义上的线程类),是Runnable接口的实现。

  ②实现Runnable接口,并重写里面的run方法。

  ③使用Executor框架创建线程池。Executor框架是juc里提供的线程池的实现。

  调用线程的start():启动此线程;调用相应的run()方法

  继承于Thread类的线程类,可以直接调用start方法启动线程(使用static也可以实现资源共享).一个线程(对象)只能够执行一次start(),而且不能通过Thread实现类对象的run()去启动一个线程。

  实现Runnable接口的类需要再次用Thread类包装后才能调用start方法。(三个Thread对象包装一个类对象,就实现了资源共享)。

  线程的使用的话,注意锁和同步的使用。(多线程访问共享资源容易出现线程安全问题)

  一般情况下,常见的是第二种。

  Runnable接口有如下好处:

  ①避免点继承的局限,一个类可以继承多个接口。

  ②适合于资源的共享

  Thread的常用方法:

  1.start():启动线程并执行相应的run()方法

  2.run():子线程要执行的代码放入run()方法中

  3.currentThread():静态的,调取当前的线程

  4.getName():获取此线程的名字

  5.setName():设置此线程的名字

  6.yield():调用此方法的线程释放当前CPU的执行权(很可能自己再次抢到资源)

  7.join():在A线程中调用B线程的join()方法,表示:当执行到此方法,A线程停止执行,直至B线程执行完毕,

  A线程再接着join()之后的代码执行

  8.isAlive():判断当前线程是否还存活

  9.sleep(long l):显式的让当前线程睡眠l毫秒 (只能捕获异常,因为父类run方法没有抛异常)

  10.线程通信(方法在Object类中):wait() notify() notifyAll()

  设置线程的优先级(非绝对,只是相对几率大些)

  getPriority():返回线程优先值

  setPriority(int newPriority):改变线程的优先级

  更多关于“Java培训”的问题,欢迎咨询千锋教育在线名师。千锋已有十余年的培训经验,课程大纲更科学更专业,有针对零基础的就业班,有针对想提升技术的好程序员班,高品质课程助理你实现java程序员梦想。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT