Java-多线程
来源:互联网 发布:html5手机游戏源码 编辑:程序博客网 时间:2024/05/06 09:23
多线程实现的方式主要有3种:
一、继承Thread,重写run()函数
class A extends Thread{
public void run0{};
}
new A().start();
二、实现runnable接口,重写run()函数
class A implements Runnable{
public void run(){};
}
new Thread(new A()).start();
三、实现Callable接口,重写call函数
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
不同点:
①:Callable重写的方法是call(),Runnable实现的方法是run();
②:Callable执行任务后有返回值,Runnable执行任务后无返回值;
③:call()方法可抛出异常,run()方法是不会抛出异常的;
④:运行callable任务可以拿到一个Future对象,Future表示异步的计算结果,它提供了检查计算任务是否完成,以及继续完成任务的时间,并检索计算的结果。
eg:
- class TaskWithResult implements Callable<String> {
- private int id;
- public TaskWithResult(int id) {
- this.id = id;
- }
- @Override
- public String call() throws Exception {
- return "result of TaskWithResult " + id;
- }
- }
- public class CallableTest {
- public static void main(String[] args) throws InterruptedException,
- ExecutionException {
- ExecutorService exec = Executors.newCachedThreadPool();
- ArrayList<Future<String>> results = new ArrayList<Future<String>>(); //Future 相当于是用来存放Executor执行的结果的一种容器
- for (int i = 0; i < 10; i++) {
- results.add(exec.submit(new TaskWithResult(i)));
- }
- for (Future<String> fs : results) {
- if (fs.isDone()) {
- System.out.println(fs.get());
- } else {
- System.out.println("Future result is not yet complete");
- }
- }
- exec.shutdown();
- }
- }
0 0
- 【Java多线程】多线程死锁
- Java 多线程
- java 多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA 多线程
- Java多线程
- java多线程
- JAVA 多线程
- Java 多线程
- Java 多线程
- java多线程
- Java 多线程
- Java多线程
- java 多线程
- EXECUTE IMMEDIATE和Using的用法
- android 页面切换
- test
- 数学老师装逼技巧,你绝对不会!
- AndroidStudio经常遇到的问题解决方案
- Java-多线程
- 14(高级IO)
- static string AppendString(params string[] strList)
- 剑指Offer——重建二叉树
- Item 表单页面的 Select2 相关业务逻辑
- Oracle表的相关概念简介
- Difference-of-Gaussian (DoG) matlab代码
- 飞思卡尔I.MX6Q-LTIB安装配置
- s:property标签