前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线程的概念、启动方式、常用方法

线程的概念、启动方式、常用方法

原创
作者头像
疯狂的KK
发布2023-03-23 12:16:23
2310
发布2023-03-23 12:16:23
举报
文章被收录于专栏:Java项目实战

线程的概念:

线程是程序执行的最小单位,它是进程中的一个实体,是被操作系统独立调度和分派的基本单位。一个进程可以包含多个线程,这些线程可以并发执行,共享进程的资源。

线程的启动方式:

  1. 继承Thread类,重写run()方法,创建Thread类的实例对象,调用start()方法启动线程。
  2. 实现Runnable接口,重写run()方法,创建Thread类的实例对象,将实现了Runnable接口的对象作为参数传递给Thread类的构造方法,调用start()方法启动线程。

常用方法:

  1. start()方法:启动线程,使线程进入就绪状态。
  2. run()方法:线程的执行体,线程启动后会自动调用run()方法。
  3. sleep()方法:让当前线程休眠指定的时间。
  4. join()方法:等待其他线程执行完毕,再执行当前线程。
  5. interrupt()方法:中断线程的执行。
  6. yield()方法:暂停当前线程,让其他线程有机会执行。
  7. isAlive()方法:判断线程是否处于活动状态。
  8. setPriority()方法:设置线程的优先级。
  9. getName()方法:获取线程的名称。
  10. currentThread()方法:获取当前线程的引用。

executors创建几种线程池

Java中的Executors类提供了几种线程池的创建方法,下面将介绍其中的几种:

  1. newFixedThreadPool(int nThreads)

该方法创建一个固定大小的线程池,该线程池中的线程数量始终保持不变,当一个新任务提交时,若当前线程池中的线程数小于corePoolSize,则会创建新的线程执行任务,若当前线程池中的线程数等于corePoolSize,则将任务加入等待队列中。

  1. newCachedThreadPool()

该方法创建一个可缓存的线程池,该线程池中的线程数可以根据需要自动扩展,若有空闲线程,则会重用空闲线程,若无空闲线程,则创建新的线程执行任务。

  1. newSingleThreadExecutor()

该方法创建一个单线程的线程池,该线程池中只有一个线程,所有任务按照指定顺序执行,即每个任务都必须在前一个任务执行完成后才能执行。

  1. newScheduledThreadPool(int corePoolSize)

该方法创建一个定时任务的线程池,该线程池中的线程数可以根据需要自动扩展,可以定时执行任务或周期性执行任务。

线程池7个参数的详细概念:

  1. corePoolSize:线程池中的核心线程数,当有新任务提交时,若当前线程池中的线程数小于corePoolSize,则会创建新的线程执行任务。
  2. maximumPoolSize:线程池中允许的最大线程数,当等待队列满了且当前线程池中的线程数小于maximumPoolSize时,会创建新的线程执行任务。
  3. keepAliveTime:线程池中的线程空闲时间,当线程空闲时间超过keepAliveTime时,线程会被销毁,直到线程池中的线程数不超过corePoolSize。
  4. unit:keepAliveTime的时间单位。
  5. workQueue:等待队列,用于存储等待执行的任务,当当前线程池中的线程数等于corePoolSize时,新提交的任务会被加入等待队列中。
  6. threadFactory:线程工厂,用于创建新的线程。
  7. handler:拒绝策略,用于处理无法处理的任务,默认为AbortPolicy,即直接抛出异常。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档