实现callable,callablelambda
Runnable:接口,用于定义抽象方法run (。 要通过实现Runnable接口来创建多线程,请(创建最本质的线程方法)1)定制类以实现Runnable接口,然后在类中实现run )方法
2 )创建自定义类的对象。
3 )创建线程Thread对象,并将自定义类对象作为构造函数参数进行入侵。
4 )从线程Thread对象调用start ()方法,启动线程,运行run ) )方法。
说明:1)如果通过自定义类继承Thread方法实现多线程,自定义类将重写run (),然后创建自定义类对象并调用start ) (以及run ) )。
2 ) Thread类本身实现Runnable接口,Thread类自然实现抽象方法run (),如下所示:
@Override public void run () if(target!=null () { target.run ); target是Runnable接口实现类的对象。 公共thread (可运行目标) init(null,target,' Thread-' nextThreadNum ),0 ); } 3) Thread类实现的是Runnable接口,而我们的自定义类实现的是Runnable接口及其抽象方法run (),在创建自定义类对象后进行Thread控制
Callable :定义抽象方法call (的接口。 此方法具有返回值、异常机制。 要通过实现Callable接口创建多线程; 1 )创建实现callable接口的实现类,在此实现类中实现call ) ),并声明线程必须执行的操作。
2 )创建上述实现类对象,并将此对象作为FutureTask类构造函数参数创建FutureTask类对象
3 )创建Thread类对象,将FutureTask对象作为构造函数参数传递,然后调用start ()
说明:1) Runnable和Callable处于同一级别,两者都有抽象函数。 run ()和call ) )。 后者的函数更强大,因为它具有返回值,可以抛出异常并支持通用性。
2 ) FutureTask实现了RunnableFuture接口; RunnableFuture接口继承Runnable接口。 代码如下。
publicclassfuturetaskvimplementsrunnablefuturevpublicinterfacerunnablefuturevextendsrunnable,FutureV FutureTask间接进入随机访问
3 )等待办理手续。
创建多线程的第三种方法是继承Thread类。 1 )创建类以继承Thread类并实现run ) )方法
2 )创建上面类的对象,从对象调用start (),打开新线程,执行run ) )方法主体