多线程的实现方式 一:继承Thread类 1.定义一个类继承Thread。 2.重写run方法。 3.创建子类对象,就是创建线程对象。 4.调用start方法,开启线程并让线程执行,同时还会告诉jvm去调用run 方法 注意事项:同一个对象,不能开启多次线程,否则会抛出异常 二:实现Runnable接口 创建线程的步骤。 1、定义类实现Runnable接口。 2、重写接口中的run方法。。 3、创建Thread类的对象 4、将Runnable接口的子类对象作为参数传递给Thread类的构造函数。 5、调用Thread类的start方法开启线程。 三:定义一个类,实现Callable接口,重写call()方法 1)接口 Callable<V> 类型参数:V - call 方法的结果类型 返回:计算结果,此结果类型与你Callable泛型一致 抛出:如果无法计算结果,则抛出一个异常 2)类 FutureTask<V> 类型参数:V - 此 FutureTask 的 get 方法所返回的结果类型。 构造方法: a)public FutureTask(Callable<V> callable):创建一个 FutureTask,一旦运行就执行给定的 Callable。 参数:callable - 可调用的任务。 b)public FutureTask(Runnable runnable,V result):创建一个 FutureTask,一旦运行就执行给定的 Runnable,并安排成功完成时 get 返回给定的结果 。 参数:runnable - 可运行的任务。 result - 成功完成时要返回的结果。如果不需要特定的结果,则考虑 使用下列形式的构造: Future<?> f = new FutureTask<Object>(runnable, null) 成员方法: public V get():从接口Future复制的描述,如有必要,等待计算完成,然后获取其结果。 返回:计算的结果 |