JAVA-多线程线程池 简单介绍

一、为什么要用线程池

1、通过复用线程池中的线程,来减少线程创建和销毁的性能开销
2、对线程进行一些维护和管理,比如定时开始,周期执行,开发数控制等等

二、线程参数意义

在这里插入图片描述
当任务数 超过 核心线程数时,会将超过的任务放到队列中,只会创建三个线程重复使用
corePoolSize 表示核心线程数
JAVA-多线程线程池 简单介绍_第1张图片

三、线程中的方法

join方法

加入join() 方法之后,主线程启动子线程之后,会等待子线程执行完毕之后再继续执行主线程下面的操作(那个线程join的那么就先等哪个线程先执行完,再执行其他的线程)如果它加入的线程没有存活,则当前线程不需要停止。
JAVA-多线程线程池 简单介绍_第2张图片

sleep

当前正在执行的线程休眠(暂时停止执行)指定的毫秒数,具体取决于系统计时器和调度程序的精度和准确性。 该线程不会失去任何监视器的所有权。
其实主要的就是他是让其他线程走,自己进行休眠,但是自己却不会释放对象锁,也就是说,如果有同步锁的时候,其他线程不能访问共享数据。

注意该方法要捕获异常 比如有两个线程同时执行(没有Synchronized),一个线程优先级为MAX_PRIORITY,另一 个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行完成后,低优先级 的线程才能执行;但当高优先级的线程sleep(5000)后,低优先级就有机会执行了。 总之,sleep()可以使低优先级的线程得到执行的机会,当然也可以让同优先级、高优先级的 线程有执行的机会。

yeid

暂停当前正在执行的线程对象,并执行其他线程。让相同优先级的线程之间能适当的轮转执行

四、多线程的四种创建方式

1)继承Thread类创建线程

2)实现Runnable接口创建线程

3)使用Callable和Future创建线程

4)使用线程池例如用Executor框架

参考博客和视频
https://blog.csdn.net/m0_37840000/article/details/79756932?utm_source=blogxgwz7

https://www.bilibili.com/video/BV1nE411P7wf?from=search&seid=194202808448674317

你可能感兴趣的:(#,新增知识,多线程)