码迷,mamicode.com
首页 > 编程语言 > 详细

Java 多线程

时间:2017-09-18 15:08:10      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:size   live   线程   maximum   int   直接   队列   状态   imu   

一、多线程实现方式

(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 多线程

标签:size   live   线程   maximum   int   直接   队列   状态   imu   

原文地址:http://www.cnblogs.com/maokun/p/7542572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!