美文网首页Java 杂谈
线程的几种创建方式

线程的几种创建方式

作者: 代码墨白 | 来源:发表于2018-07-11 13:53 被阅读1次

线程的几种创建方式 编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有三种方法,Thread,Runnable,Callable.Runnable和Callable的区别是(1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得(3)call方法可以抛出异常,run方法不可以(4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。

1、通过实现Runnable接口来创建Thread线程:

 步骤1:创建实现Runnable接口的类: class SomeRunnable implements Runnable{ public void run() { //do something here }}

步骤2:创建一个类对象: Runnable oneRunnable = new SomeRunnable();

步骤3:由Runnable创建一个Thread对象: Thread oneThread = new Thread(oneRunnable);

步骤4:启动线程: oneThread.start();至此,一个线程就创建完成了。

注释:线程的执行流程很简单,当执行代码oneThread.start();时,就会执行oneRunnable对象中的void run();方法,该方法执行完成后,线程就消亡了。

2、与方法1类似,通过实现Callable接口来创建Thread线程:其中,Callable接口(也只有一个方法)定义如下:public interface Callable{ V call() throws Exception; }

步骤1:创建实现Callable接口的类SomeCallable(略);

步骤2:创建一个类对象: CallableoneCallable = new SomeCallable();

步骤3:由Callable创建一个FutureTask对象: FutureTaskoneTask = new FutureTask(oneCallable);     

 注释:FutureTask是一个包装器,它通过接受Callable来创建,它同时实现了Future和Runnable接口。

步骤4:由FutureTask创建一个Thread对象: Thread oneThread = new Thread(oneTask);

步骤5:启动线程: oneThread.start();至此,一个线程就创建完成了。

3、通过继承Thread类来创建一个线程:

步骤1:定义一个继承Thread类的子类: class SomeThead extends Thraad{ public void run() { //do something here }}

步骤2:构造子类的一个对象: SomeThread oneThread = new SomeThread();

步骤3:启动线程: oneThread.start();至此,一个线程就创建完成了。 注释:这种创建线程的方法不够好,主要是因为其涉及运行机制问题,影响程序性能。

4、通过线程池来创建线程:

步骤1:创建线程池: ExecutorService pool = Executors.newCachedThreadPool();

步骤2:通过Runnable对象或Callable对象将任务提交给ExecutorService对象: Futuresubmit(Callabletask);

 注释:Future是一个接口,它的定义如下: public interface Future { V get() throws ...; V get(long timeout, TimeUnit unit) throws ...; void cancle(boolean mayInterrupt); boolean isCancelled(); boolean isDone(); } 至此,一个线程就创建完成了。

注释:线程池需调用shutdown();方法来关闭线程

相关文章

  • 线程

    java 中创建线程有哪几种方式? Java中创建线程主要有三种方式: 一、继承Thread类创建线程类 (1)定...

  • 创建线程几种方式

    1、继承Thread类 2、实现Runnable接口 推荐:可实现多个接口,而只能继承一个类。 3、应用程序可以使...

  • Future系列(FutureTask)

    一、前言 创建线程有几种方式? 继承 Thread 类 实现 Runnable 接口 但这两种方式创建的线程是属于...

  • Java多线程:线程的创建与启动

    # 面试题: Java中创建线程有几种方式。 不同的创建方式有什么区别。 如何启动一个线程。 # Java中创建线...

  • 线程的几种创建方式

    线程的几种创建方式 编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有三种方法,Threa...

  • 创建线程的几种方式

    说道线程,肯定会想到使用 java.lang.Thread.java这个类那么创建线程也主要有2种方式第一种方式:...

  • 几种创建线程的方式

    继承Thread 通过继承Thread类来创建并启动多线程的一般步骤如下1】d定义Thread类的子类,并重写该类...

  • 创建线程的几种方式

    1.通过继承Thread类创建线程类 1.步骤 定义Thread类的子类FirstThread,并重写run()方...

  • 创建线程的几种方式

    创建多线程是为了实现多任务并发执行,从而能够更好地与用户交互,达到更高的效率。 创建线程常用的方式有四种:1、继承...

  • 创建线程的几种方式

    继承Thread类 实现Runnable接口 通过Callable创建线程(异步,可以返回结果) 线程池创建

网友评论

    本文标题:线程的几种创建方式

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