Java 多线程
Posted 茅坤宝骏氹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 多线程相关的知识,希望对你有一定的参考价值。
一、多线程实现方式
(1)继承Thread类,覆盖run方法
(2)实现Runnable接口,覆盖run方法,将对象传人Thread对象中
实现Runnable接口比继承Thread类所具有的优势:
1)适合多个相同的程序代码的线程去处理同一个资源
2)可以避免java中的单继承的限制
3)增加程序的健壮性,代码可以被多个线程共享,代码和数据独立
4)线程池只能放入实现Runable或callable类线程,不能直接放入继承Thread的类
二、线程池
(1)Executors的newCachedThreadPool 方法创建了一个可扩展的线程池。
(2)Executors的newSingleThreadExecutor 方法创建了每次执行一个任务的执行器。
(3)Executors的newFixedThreadPool
- Executors.newFixedThreadPool(int)方法创建线程池ExecutorService
- 线程池execute方法提交实现Runnable接口的对象
- 线程池submit方法提交实现Runnable或者Callable接口的对象,返回Future对象,Future对象get方法阻塞等待完成可以获取线程返回值。
- 线程池shutdown方法,只能立刻interrupt那些目前没有任务,处于等待状态从blockingQueue获取任务的异常。而不能interrupt那些在任务 执行过程中的thread,或者是任务执行过程中挂起的thread.
- 线程池shutdownNow方法,不管任务是否在执行中,一律interrupt,不去判断什么锁不锁。
(4)ThreadPoolExecutor类
public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue)
corePoolSize 空闲时的线程数
maximumPoolSize 最大的线程数
keepAliveTime 超过corePoolSize的空闲线程最大活跃时间
unit 时间单位
workQueue 线程阻塞队列
以上是关于Java 多线程的主要内容,如果未能解决你的问题,请参考以下文章