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 多线程的主要内容,如果未能解决你的问题,请参考以下文章

什么是JAVA的多线程?

java中啥叫做线程?啥叫多线程?多线程的特点是啥

多线程Java多线程学习笔记 | 多线程基础知识

java中啥叫做线程?啥叫多线程?多线程的特点是啥?

Java+线程内部调用实例方法会多线程安全吗?

Java多线程 5.栅栏