java:多线程基础之Runnable、Callable与Thread
2014-11-13 15:28
381 查看
java.lang包下有二个非常有用的东西:Runnable接口与Thread类,Thread实现了Runnable接口(可以认为Thread是Runnable的子类),利用它们可以实现最基本的多线程开发。
一、Runnable入门示例
View Code
二个注意点:
a) FutureTask使用Callable接口取得返回值,因为结果可能并不需要立刻返回,而是等到未来真正需要的时候,而Runnable并不提供返回值
b) FutureTask通过Thread的start()调用后,马上就开始处理,但并不阻塞后面的线程,在真正需要处理结果的时候,调用get()方法,这时如果FutureTask本身的处理尚未完成,才会阻塞,等待处理完成
刚才的运行结果:
FutureTask准备开始...
FutureTask开始处理...
其它处理开始...
其它处理完成...
FutureTask处理结果:hello world
全部处理完成
可以看到,“其它处理”并未被FutureTask阻塞,但FutureTask其实已经在后台处理了。
一、Runnable入门示例
package com.cnblogs.yjmyzz; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class RunnableDemo9 { public static void main(String[] args) throws InterruptedException, ExecutionException { FutureTask<String> task = new FutureTask<String>( new Callable<String>() { public String call() throws InterruptedException { System.out.println("FutureTask开始处理..."); Thread.sleep(1000); return "hello world"; } }); System.out.println("FutureTask准备开始..."); new Thread(task).start(); System.out.println("其它处理开始..."); Thread.sleep(1000); System.out.println("其它处理完成..."); System.out.println("FutureTask处理结果:" + task.get()); System.out.println("全部处理完成"); } }
View Code
二个注意点:
a) FutureTask使用Callable接口取得返回值,因为结果可能并不需要立刻返回,而是等到未来真正需要的时候,而Runnable并不提供返回值
b) FutureTask通过Thread的start()调用后,马上就开始处理,但并不阻塞后面的线程,在真正需要处理结果的时候,调用get()方法,这时如果FutureTask本身的处理尚未完成,才会阻塞,等待处理完成
刚才的运行结果:
FutureTask准备开始...
FutureTask开始处理...
其它处理开始...
其它处理完成...
FutureTask处理结果:hello world
全部处理完成
可以看到,“其它处理”并未被FutureTask阻塞,但FutureTask其实已经在后台处理了。
相关文章推荐
- Java_基础—多线程程序实现的3种方式Thread和Runnable和Callable
- Java多线程基础-2-简单继承Thread,实现Runnable例子
- Java多线程Thread,Runnable, Callable<>和线程池(一)
- Java:多线程,分别用Thread、Runnable、Callable实现线程
- Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别
- java多线程 基础(二) Thread Runnable
- JAVA基础(多线程Thread和Runnable的使用区别(转载)
- Java 多线程(二)——创建线程(Thread、Runnable、Callable)
- Java 多线程(二)——创建线程(Thread、Runnable、Callable)
- java 多线程(一)---创建线程的三种方式Thread,Runnable,Callable与Future
- Java多线程Thread,Runnable, Callable<>和线程池(二)
- Java 实现多线程的3种方法:继承Thread类;实现Runnable接口;实现Callable接口。具体代码实现实例
- java实现多线程的三种方式(thread、runnable、callable)
- java入门学习:多线程创建-Thread,Runnable,callable和threadpool
- java 线程 --- Thread,Runnable,Callable 基础学习
- JAVA基础(多线程Thread和Runnable的使用区别
- JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没
- Java多线程之Thread、Runnable、Callable及线程池
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
- JAVA多线程实现的三种方式(继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程)