更多多线程相关知识点详见个人主页【多线程相关】专栏
线程创建方式
Thread
- 创建方式:定义
Thread类的子类,并重写run()方法,创建子类的实例并调用其start()方法来启动线程。 - 优点:实现简单,使用方便。
- 缺点:因为Java单继承,所以无法继承其他类;不能共享
Thread类之外的其他类属性和方法。
Runnable
- 创建方式:定义
Runnable接口的实现类,并重写run()方法,创建实现类的实例并将其作为参数传递给Thread构造函数,然后调用start()方法启动线程。 - 优点:避免了单继承的限制,可以共享资源;更好的代码封装和模块化。
- 缺点:编程稍微复杂,如果要访问当前线程,需要使用
Thread.currentThread()方法。
Callable
- 创建方式:创建
Callable接口的实现类,并实现call()方法,该方法有返回值。使用FutureTask类来包装Callable对象,该FutureTask对象封装了Callable对象的call()方法的返回值。使用FutureTask对象作为Thread对象的target创建并启动新线程。 - 优点:可以返回执行结果,并且可以抛出异常;提供了一种异步执行任务的机制。
- 缺点:使用相对复杂,需要结合
ExecutorService使用。
通过线程池创建线程
- 线程池的创建通常如下
ExecutorService executor = Executors.newFixedThreadPool(nThreads);
-
或者自定义创建
ThreadPoolExecutor threadPool = new ThreadPoolExecutor( corePoolSize, // 核心线程数 maximumPoolSize, // 最大线程数 keepAliveTime, // 空闲线程存活时间 TimeUnit.SECONDS, // 空闲线程存活时间单位是秒 workQueue, // 任务队列 threadFactory, // 线程工厂 handler // 拒绝策略 );

被折叠的 条评论
为什么被折叠?



