线程的概念、启动方式、常用方法
【摘要】 线程的概念:线程是程序执行的最小单位,它是进程中的一个实体,是被操作系统独立调度和分派的基本单位。一个进程可以包含多个线程,这些线程可以并发执行,共享进程的资源。线程的启动方式:1. 继承Thread类,重写run()方法,创建Thread类的实例对象,调用start()方法启动线程。2. 实现Runnable接口,重写run()方法,创建Thread类的实例对象,将实现了Runnable接...
线程的概念:
线程是程序执行的最小单位,它是进程中的一个实体,是被操作系统独立调度和分派的基本单位。一个进程可以包含多个线程,这些线程可以并发执行,共享进程的资源。
线程的启动方式:
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,即直接抛出异常。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)