在Java中实现多线程需要使用哪些关键词

  介绍

这期内容当中小编将会给大家带来有关在Java中实现多线程需要使用哪些关键词、文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强> 1。关于Ranable和调用

首先Java中创建线程的方法有三种:

    <李>继承线程类,覆盖运行方法 <李>实现Runable接口,实现运行方法 <李>实现可调用的接口,实现运行方法

继承线,单继承的缘,故不能再继承其他类,获取当前线程这

实现Runable接口,没有返回值,获取当前线程Thread.currentThread ()

实现可调用的接口,可通过Future.get()获取返回值,获取当前线程Thread.currentThread ()

继承线,两个步骤:

类DemoThread扩展线程{
  @Override
  公共空间run () {
  super.run ();//执行耗时的操作…
  }
  }
  新DemoThread DemoThread t=();
  t.start (); 
    <李>继承线程类,覆盖运行()方法。李 <>李创建线程对象并开始用()方法启动线程。

实现Runable,一般使用如下:

新线程(新Runnable () {
  @Override
  公共空间run () {//做某事
  }
  }).start (); 

为了简单。

以上两种方式获取线程执行的结果相当麻烦,不能直接获取.JDK1.5增加了可调用,调用的调用()方法可以返回值和抛出异常.Callable可以返回装载有计算结果的未来对象。
可调用的源码:

公共接口Callable{
  V叫()抛出异常;
  }

可调用的基本使用方法:

FutureTaskfutureTask=new FutureTask(新的Callable () {   @Override   公共整数调用()抛出异常{//做某事   返回null;   }   });   线程的线程=新线程(futureTask);   thread.start ();   整数结果=futureTask.get ();

运行可调用的任务可以拿到一个未来的对象,通过未来的获得()方法拿到线程执行的返回值。那么……将来,

FutureTask区别是什么,怎么使用?

→下一个()

<强> 2。关于未来和FutureTask

为了获取线程的执行结果,引入了未来的FutureTask,那么他们是什么关系,如何使用?

未来类位于java.util。concurrent包下,它是一个接口:

公共接口Future{
  布尔取消(布尔mayInterruptIfRunning);
  布尔isCancelled ();
  布尔结束();
  V get()抛出InterruptedException, ExecutionException;
  V获得(长超时,TimeUnit unit)
  抛出InterruptedException,中TimeoutException;
  }

<>强未来定义了5个方法:

1)布尔取消(布尔mayInterruptIfRunning):试图取消对此任务的执行。如果任务已完成,或已取消,或者由于某些其他原因而无法取消,则此尝试将失败。当调用取消()时,如果调用成功,而此任务尚未启动,则此任务将永不运行。如果任务已经启动,则mayInterruptIfRunning参数确定是否应该以试图停止任务的方式来中断执行此任务的线程。此方法返回后,对结束()的后续调用将始终返回正确的。如果此方法返回真,则对isCancelled()的后续调用将始终返回真的。

2)布尔isCancelled():如果在任务正常完成前将其取消,则返回真的。

3)布尔结束():如果任务已完成,则返回正确的。可能由于正常终止,异常或取消而完成,在所有这些情况中,此方法都将返回真的。

4) V()抛出InterruptedException, ExecutionException:如有必要,等待计算完成,然后获取其结果。

5) V(长超时,TimeUnit unit)抛出InterruptedException,中TimeoutException:如有必要,最多等待为使计算完成所给定的时间之后,获取其结果(如果结果可用)。

<强>总的来说未来提供了三种功能:

判断任务是否完成;

能够中断任务,

能够获取任务执行结果。

RunnableFuture继承了Runnable接口和未来接口,而FutureTask实现了RunnableFuture接口。

FutureTask的实现:

公共类FutureTask实现RunnableFuture 

RunnableFuture接口的实现:

公共接口RunnableFuture扩展了Runnable, Future{
  空运行();
  }

FutureTask是未来接口的一个唯一实现类。

除了可以用线程包装FutureTask外,还有另一种使用方法:

 ExecutorService执行人=Executors.newCachedThreadPool ();
  FutureTaskfutureTask=new FutureTask(新的Callable () {
  @Override
  公共整数调用()抛出异常{//做某事
  返回null;
  }
  });
  executor.submit (futureTask);
  整数结果=futureTask.get (); 

在Java中实现多线程需要使用哪些关键词