首页 > 编程语言 > 详细

Java 多线程

时间:2017-09-18 13:54:44      阅读:193      评论:0      收藏:0      [点我收藏+]

一、多线程实现方式

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!