首页天道酬勤callable类型,runnable类

callable类型,runnable类

张世龙 05-05 20:25 60次浏览

Runnable Runnable是一个只有一个run方法的接口。 实现Runnable接口的类必须重写run方法。 然后,可以将该类作为Thread类的参数创建线程。 具体的使用方法有两种。

创建类,实现Runnable接口,以及run方法classmythreadimplementsrunnable { @ overridepublicvoidrun (} system.out.println () 将对象classtest { publicstaticvoidmain (string [ ] args ) { Runnable myThread=new Runnable ) @overridepublicvoidrublid ; }} Callable Calllable也是接口,用于创建线程。 但是,有点不同。 Callable有一个call方法,可以在一个类中实现Callable接口,然后重写call方法以用作Thread的参数。 call方法有返回值,但使用方法不同。 此外,创建的对象也必须用FurtherTask类包裹,然后传递,而不是直接作为Thread的参数。 必须在要使用的further任务的get方法中获取call方法的返回值。 使用方法如下。

classmythreadimplementscallablestring {私有int ticket=10; //共10张门票@ overridepublicstringcall (throws exception ) while ) this.ticket -- ) { System.out.println剩余票数:“ 下次再说吧。 请参阅。 }公共类测试{ publicstaticvoidmain (字符串[ ] args ) throwsexception ) futuretaskstringtask=newfuturetask ) newmytask system.out.println(task.get ); }两者区别相同,两者都是接口; 两者都可以用于创建多线程程序; 两者都必须调用Thread.start ()来启动线程。区别在于实现Callable接口的任务线程返回执行结果。 实现Runnable接口的任务线程无法返回结果; Callable接口的呼叫(方法允许抛出异常; 另一方面,Runnable接口的run ) )方法的异常只能在内部消化,不能继续扔; 特殊:使用FutureTask的get方法时,主线程处于阻止状态。 这是为了确保在执行call方法并生成结果后启动主进程。 必须调用get方法才能阻止。 也就是说,Callable与Runnable的效果相同,除非调用get方法。

thread实现runnable,runnable和thread