`

用Callable接口实现多线程

    博客分类:
  • Java
 
阅读更多
package com.threeKindThreads;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class TestCallableThread implements Callable<Integer>{

	
	private int i;
	@Override
	public Integer call() throws Exception {
		// TODO Auto-generated method stub
		for(; i<100; i++) {
			System.out.println(Thread.currentThread() + " " + i);
		}
		return i;
	}

	public static void main(String[] args) {
		
		TestCallableThread thread = new TestCallableThread();
		FutureTask<Integer> task1 = new FutureTask<Integer>(thread);
		FutureTask<Integer> task2 = new FutureTask<Integer>(thread);
		
		for(int i=0; i<100; i++) {
			System.out.println(Thread.currentThread().getName() + " " + i);
			
			if(i == 20) {
				new Thread(task1, "Thread1 with return value").start();
				new Thread(task2, "Thread2 with return value").start();
			}
		}
		
		try {
			System.out.println("return value = " + task1.get());
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
	}
}
分享到:
评论

相关推荐

    Java使用Callable和Future创建线程操作示例

    1. 创建Callable接口的实现类,并实现call()方法,该call()方法将作为该线程的执行体,且该call()方法有返回值,再创建Callable的实例。从Java 8开始,可以直接使用Lamda表达式创建Callable对象。 2. 使用...

    详解Java Callable接口实现多线程的方式

    Java Callable接口实现多线程的方式详解 Java Callable接口是Java 1.5中引入的一种多线程实现方式,用于解决传统线程创建方式的缺陷。 Callable接口和Future接口的组合使用,能够实现多线程并发执行任务,并获取...

    java callable(多线程)

    在Java编程中,`Callable`接口是处理多线程问题的一个重要概念,尤其在需要从线程中返回结果的情况下。`Callable`接口与我们熟知的`Runnable`接口相似,但功能更加强大,主要体现在以下几个方面: 1. **方法签名的...

    Java多线程Callable接口实现代码示例

    Java 多线程 Callable 接口实现代码示例 Java 多线程编程中,创建线程有多种方式,其中一种便是实现 Callable 接口。Callable 接口是一个函数式接口,定义了一个 call 方法,该方法可以抛出异常并返回结果。与 ...

    Java多线程之Callable接口的实现

    在Java中,有两种方式可以实现多线程编程,即继承Thread类和实现Runnable接口。然而,在一些情况下,我们需要在多线程中返回结果或者抛出异常,这时就需要使用Callable接口。 Callable接口是Java 1.5中引入的新的...

    java实现多线程文件传输

    本篇文章将深入探讨如何使用Java实现多线程文件传输,并涵盖以下几个关键知识点: 1. **线程基础**:在Java中,线程是程序执行的基本单元,可以通过实现`Runnable`接口或继承`Thread`类来创建。`Runnable`接口更...

    Java多线程实现Callable接口

    在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。此外,Java 5引入了Callable接口,它提供了一种更灵活的方式来创建线程,特别是当需要从线程中返回结果时。 Callable接口类似于Runnable,但...

    Callable接口源码阅读1

    Callable接口在Java中扮演着重要的角色,特别是在多线程编程中。它被设计用来创建能够返回结果并可能抛出异常的任务。下面是Callable接口的详细分析: 1. **接口概述** Callable接口是Java中标准库的一部分,位于`...

    Java多线程Callable和Future接口区别

    例如,我们可以使用Callable接口来实现一个复杂的计算任务,然后使用Future接口来获取计算结果。 Java多线程Callable和Future接口的使用场景非常广泛,如计算复杂的数学问题、处理大规模数据、实现高性能的服务器...

    Java多线程Callable接口

    Runnable是执行工作的独立任务,但是它不返回任何值,如果你希望任务在完成时能够返回一个值,那么可以实现Callable接口而不是Runnable接口。在Java SE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表示...

    计算机后端-Java-Java核心基础-第20章 多线程 18. 创建多线程的方式三:实现Callable接口.avi

    计算机后端-Java-Java核心基础-第20章 多线程 18. 创建多线程的方式三:实现Callable接

    Android(Java)之多线程结果返回——Future 、FutureTask、Callable、Runnable

    1. `Runnable`: 这是Java中最基础的多线程接口,只需实现`run()`方法,然后通过`Thread`对象启动新线程来执行这个任务。例如: ```java Runnable task = new Runnable() { @Override public void run() { // ...

    多线程发邮件

    总之,“多线程发邮件”利用了Java的多线程和并发特性,通过ExecutorService和Callable接口实现了邮件发送的并行化,提高了效率。同时,使用线程池可以更好地管理资源,避免频繁的线程创建和销毁,从而优化系统性能...

    【Java】Callable创建线程用到的适配器模式(csdn)————程序.pdf

    在Java编程中,多线程是并发处理任务的关键机制,Callable接口和FutureTask类是Java提供的用于创建具有返回值的线程的重要工具。本文将详细解释Callable接口的使用、适配器模式在创建线程中的应用,以及FutureTask在...

    java实现多线程下载文件

    通过以上步骤,我们可以设计并实现一个高效的多线程文件下载系统。在实际项目中,还可以考虑使用成熟的库,如Apache HttpClient或OkHttp,它们提供了对多线程下载的良好支持。同时,结合Java的并发库,可以构建出更...

    java多线程实现大批量数据导入源码

    可以使用`ExecutorService`的`submit()`或`execute()`方法来执行任务,每个任务通常是一个实现了`Runnable`或`Callable`接口的对象。 在数据导入过程中,每个线程负责处理一部分数据,可能涉及到数据库连接的建立、...

    java中spring里实现多线程

    当我们谈到在Spring中实现多线程,实际上是在讨论如何在Spring环境中创建、管理和协调并发执行的任务。这涉及到Java的并发API以及Spring对这些API的包装和扩展。 首先,让我们了解Java中的多线程基础。在Java中,...

    突破JAVA万人面试,懂多线程者得天下.zip

    06线程创建实现 Callable接口avi 07线程创建线程池创建线程avi 08线程创建小结av 09线程生命周期avi 10.线程安全问题什么是线程安全avi 11线程安全同题问题分析avi 12线程安全问题线程安全问题演示avi ................

    多线程面试59题(含答案).pdf

    Java 实现多线程的方式有四种:继承 Thread 类、实现 Runnable 接口、使用 ExecutorService、Callable、Future 实现有返回结果的多线程。启动线程方法 start()和 run()有所区别,start()方法可以表现出多线程的特性...

Global site tag (gtag.js) - Google Analytics