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

2023-03-23 12:16:23 浏览数 (1)

线程的概念:

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

线程的启动方式:

  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,即直接抛出异常。

0 人点赞