`

Java有返回值的线程

 
阅读更多
    Java中可返回值的任务(线程)必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。

    执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。

示例代码
package com.ajita;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class TestCallable {
	public static void main(String[] args) throws ExecutionException,
			InterruptedException {
		// 创建一个线程池
		ExecutorService pool = Executors.newFixedThreadPool(2);
		// 创建两个有返回值的任务
		Callable c1 = new MyCallable("A");
		Callable c2 = new MyCallable("B");
		// 执行任务并获取Future对象
		Future f1 = pool.submit(c1);
		Future f2 = pool.submit(c2);
		// 从Future对象上获取任务的返回值,并输出到控制台
		System.out.println(">>>" + f1.get().toString());
		System.out.println(">>>" + f2.get().toString());
		// 关闭线程池
		pool.shutdown();
	}
}

class MyCallable implements Callable<Object> {
	private String oid;

	MyCallable(String oid) {
		this.oid = oid;
	}

	public Object call() throws Exception {
		return oid + "任务返回的内容";
	}
}
分享到:
评论

相关推荐

    有返回值的线程

    总之,要实现有返回值的线程,我们可以使用Java的`Callable`接口和`Future`、`ExecutorService`等工具,这些机制允许我们在异步环境中获取任务执行的结果。对于`jdbctest`,可能包含的是使用JDBC进行数据库操作的多...

    在Java 线程中返回值的用法

    NULL 博文链接:https://icgemu.iteye.com/blog/467848

    Java多线程编程总结

    Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征...

    java多线程处理数据库数据

    然后,我们将数据库操作封装为`Callable`任务,因为`Callable`可以返回结果,适合于数据库操作这种有返回值的操作。 ```java public class DatabaseTask implements Callable&lt;Void&gt; { private Connection ...

    使用Runnable模拟Callable接口实现线程有返回值

    大家都知道Runnable和Callable接口都可以作为其他线程执行的任务,但是Runnable接口的run方法没有返回值,而Callable接口的call方法有返回值,那么Callable接口是如何做到的呢?在此我给出一个Demo,看看通过...

    java线程详解

    Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征-原子量 Java线程:新特征-障碍器 Java线程:...

    Java Thread多线程全面解析

    除了上述创建线程的方式,Java还提供了Callable和Future接口,用于创建带返回值的线程,以及ExecutorService和ThreadPoolExecutor等高级线程管理工具,以更灵活地控制线程的执行和管理。 在实际开发中,理解和掌握...

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

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

    Java_多线程编程线程:大总结

    - **有返回值的线程**:通过`Callable`和`Future`实现线程的返回值,提供了更灵活的异步编程模型。 - **锁**:高级锁机制如`ReentrantLock`,提供了比`synchronized`更灵活的锁定策略。 - **信号量**:控制对有限...

    JAVA多线程教材

    4. **线程优先级与守护线程**:Java线程有优先级之分,可以影响调度,但实际效果取决于操作系统。守护线程(Daemon Thread)是一种特殊类型的线程,当它是系统中唯一运行的线程时,JVM会自动退出。 5. **并发集合与...

    Java-多线程教学文档

    Java 5及以后版本引入了更多的并发工具,如线程池、Future和Callable接口支持有返回值的线程,锁的高级形式如读写锁、可重入锁,还有Semaphore(信号量)、BlockingQueue(阻塞队列)、BlockingStack(阻塞栈)、...

    java线程实例 各种小Demo

    Java线程有五种状态:新建、可运行、运行、阻塞和终止。可以通过Thread类的getState()方法查看线程状态。线程的控制包括: - sleep():使当前线程进入休眠状态,指定时间后自动唤醒。 - join():让当前线程等待另一...

    Java多线程教程资料(强烈推荐).docx

    Java 中的多线程新特征包括 volatile 关键字、信号量、阻塞队列、条件变量、线程池、有返回值的线程等。volatile 关键字可以用于变量的同步,信号量可以用于线程之间的通信,阻塞队列可以用于线程之间的数据传递,...

    Java多线程结构_Java多线程结构_

    Java线程有10个优先级,从Thread.MIN_PRIORITY(1)到Thread.MAX_PRIORITY(10),但实际操作中,优先级的影响力并不大,操作系统调度策略可能会忽略优先级。 总之,理解和掌握Java多线程结构对于编写高效的并发...

    JAVA多线程总结

    - **优先级**:线程有优先级,`Thread.setPriority()`设置优先级,高优先级线程更可能获得执行机会。 - **让步**:`Thread.yield()`让当前线程放弃CPU使用权。 - **合并**:多个线程可以合并为一个线程组,便于管理...

    Java多线程的经典资料.rar

    3. **线程状态**:线程有多种状态,包括新建、可运行、运行、阻塞和死亡。理解这些状态对于管理线程至关重要。 4. **线程同步**:为避免多线程环境下的数据竞争,Java提供了多种同步机制,如`synchronized`关键字、...

Global site tag (gtag.js) - Google Analytics