java如何创建线程

2025-07-19 12:17:07

1、首先,不用创建线程类也可以开启一个小的线程,直接写在main方法里,new一个Thread就可以了,这是最简单的开启线程的方式。

java如何创建线程

2、使用继承的方式创建线程类,其启动方式。

java如何创建线程
java如何创建线程

3、使用实现接口的方式创建线程类,启动方式就变了

java如何创建线程
java如何创建线程

4、最后来看一下线程池的方式,线程池有镉胶鱿瓜几个参数,其含义要注意一下,corePoolSize 核心池数量;maximumPoolSize:最大池数量;keepAlive皈其拄攥Time:存活时间(指的是线程池当前活动的线程数量超过了corePoolSize,线程池会关闭存活时间超过keepAliveTime的活动线程);TimeUnit:时间单位(秒或者毫秒等,是个枚举类型);BlockingQueue:阻塞队列(当线程并发较多时,当前活动的线程处理不了,部分线程会放进阻塞队列等待执行(理论上是当请求大于maximumPoolSize时,多余的会放在阻塞队列中),当阻塞队列放满时(请求数>maximumPoolSize+阻塞数量),多余的线程就会直接被拒绝掉。可以设置阻塞队列的大小,阻塞队列也可以无界,这样就不会有线程被拒绝。);RejectedExecutionHandler:阻塞队列放满了,还有多余的线程,就会交给这个东西处理,我们也可以写自己的拒绝处理类。

java如何创建线程

5、我们写个线程池测试一下阻塞的情况,猜一猜是否会有线程被拒绝。线程类使用ThreadClass1,接我们自定义一个处理拒绝线程的类TestRejectedExecutionHandler

java如何创建线程

6、编写TestThreadPool2,开启线程。注意要shutDown线程池,否则程序不会终止。

java如何创建线程

7、输出结果,和我们猜的差不多吧。9>2+6,所以第九个被拒绝了。还有一点要注意就是设置了一个30毫秒的延迟,这样就保证了有两个正在执行,有6个放在阻塞队列,还有一个被kill掉。

java如何创建线程
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢