线程的启动方式以及SingleThreadExecutor

作者: mister_tao | 来源:发表于2016-09-09 17:51 被阅读111次

启动线程方式一: 线程可以驱动任务,因此需要一种描述任务的方式,可以由Runnable接口来提供,要想定义任务,只需要实现Runnable接口并编写run()方法,使得该任务执行你的命令.

private static class LiftOff implements Runnable{

private int count = 10000;

@Override

public void run() {

while(count-- > 0){

System.out.println("count :"+count);

Thread.yield();

}

public static void main(String[] args) {

LiftOff liftOff = new LiftOff();

liftOff.run();

}

启动线程方式二: 将Runnable对象转变为工作任务的传统方式是把它提交给一个Thread构造器,Thread构造器只需要一个Runnable对象,然后调用start方法就可以启动

Thread t = new Thread(new LiftOff());

t.start();

启动线程方式三:使用Executor,创建线程池对象, 即ExecutorService 对象,然后调用exec()方法,

ExecutorService exec = Executors.newCachedThreadPool();

for(int i = 0; i < 5; i++)

exec.execute(new LiftOff());

exec.shutdown();

详细介绍第三种方式,Executor的三个方法:

1,newFixedThreadPool

2,newSingleThreadExecutor

3,newCachedThreadPool

如果向SingleThreadExecutor提交了多个任务,那么这些任务将排队,每个任务都会在下一个任务开始之前运行结束,所有的任务将使用相同的线程,下面的实例中,SingleThreadExecutor会序列化所有提交给它的任务,并会维护它自己的任务队列。

ExecutorService exec = Executors.newSingleThreadExecutor();

for(int i = 0; i < 5; i++)

exec.execute(new LiftOff());

exec.shutdown();

另外应用场景:假设你有大量的线程,那他们运行的任务将使用文件系统,你可以用SingleThreadExecutor来运行这些线程,以确保任意时刻在任务线程中都只有唯一的任务在运行,在这种方式中,你不需要在共享资源上处理同步,同时不会过度使用文件系统,有时更好的解决方案是在资源上同步,但是SingleThreadExecutor可以让你省去只是为了维持某些原型而进行的各种协调努力。

相关文章

  • 线程的启动方式以及SingleThreadExecutor

    启动线程方式一: 线程可以驱动任务,因此需要一种描述任务的方式,可以由Runnable接口来提供,要想定义任务,只...

  • 关于SingleThreadExecutor以及Finaliza

    关于SingleThreadExecutor以及FinalizableDelegatedExecutorServi...

  • Java 多线程之线程的创建及其使用

    一、创建线程以及启动线程 二、停止线程 三、线程类中函数详解 一、创建线程以及启动线程 创建线程:Java中创建线...

  • 并发与多线程开发

    认识线程  线程的启动方式以及应用场景  线程的状态和常用方法  线程的优先级 提升任务的响应速度  线程间通讯 ...

  • ExecutorService_NewSingleThreadE

    任务是顺序执行的,SingleThreadExecutor得到的是一个单个的线程,这个线程会保证你的任务执行完成,...

  • 多线程(一)启动方式及关键字

    线程的启动方式 继承Thread 实现Runnable 线程的启动方式 多线程的关键字 sleep使当前线程暂停,...

  • 2019-01-25 零碎复习

    线程交互的几种方式 线程启动, A 启动 B, 线程终结, 不要用 Stop , 用 Interrupt 线程的等...

  • iOS 多线程-NSThread

    1. 创建和启动线程 创建、启动线程 2. 其他创建线程方式 创建线程后自动启动线程[NSThread detac...

  • 其他快速开启线程的方法

    创建线程后自动启动线程 隐式创建并启动线程 ● 上述2种创建线程方式的优缺点● 优点:简单快捷● 缺点:无法对线程...

  • 4-1 启动线程的方式

    启动线程的正确方式:start()一、start()有哪些作用?1,启动新线程线程对象在初始化之后被Main线程调...

网友评论

    本文标题:线程的启动方式以及SingleThreadExecutor

    本文链接:https://www.haomeiwen.com/subject/qzeeettx.html