`
wangxinxin1212
  • 浏览: 29766 次
社区版块
存档分类
最新评论

可以获得结果的线程

阅读更多

       在做一个Android应用,该应用需要与服务器通信,需要想服务器发送请求,并处理返回的信息。看起来很好实现,用Android的URL访问服务器地址。但是之前的我一直不知道java1.5以后有了Callable这个东东,而还在为怎么获得执行网络访问返回的数据犯愁。通过FutureTask与Callable可以在需要的时候获得返回值。这样就可以很方便的在执行网络访问后处理返回的数据。

 

关于FutureTask与Callable及java的并发知识还是得继续学习。

 

下面是一个小例子:

public void testTreand(){
		FutureTask<Integer> task = new FutureTask<Integer>(new Callable<Integer>() {//java8中可以使用lambda表达式

			@Override
			public Integer call() throws Exception {//与run方法类似,只是这里有返回值
				int num = 0;
				for(int i=0; i<100; i++){
					num += 1;
					System.out.println(Thread.currentThread().getName()+"->"+ num);
				}
				return num;
			}
		
		});
		Thread thread = new Thread(task,"子线程");
		thread.start();
		for(int i=0; i<100; i++){
			System.out.println(Thread.currentThread().getName()+"->"+i);
		}
		
		try {
			System.out.println("子线程返回结果:"+task.get());
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
	}

 这个例子知识简单的介绍了FutureTask与Callable的使用,网上有更多详细的介绍。

0
1
分享到:
评论

相关推荐

    多线程并行执行,汇总结果

    例如,每个线程可以使用`AtomicInteger`累加计算结果,当所有线程执行完后,主线程可以通过读取`AtomicInteger`的值来获取汇总的结果。或者,使用`ConcurrentHashMap`存储每个线程的局部结果,最后主线程遍历`...

    C#多线程编程 四个显示线程计算结果的函数

    获取响应时,通过`HttpWebRequest.GetResponse()`方法得到`HttpWebResponse`对象,然后可以读取响应的`ContentLength`等属性来处理文件传输。多线程下载文件通常会创建多个`HttpWebRequest`实例,每个实例负责下载...

    易语言线程返回数据的方法源码

    计算结果 = 计算任务() // 假设计算任务是一个函数,计算完成后得到结果 设置线程变量( .线程句柄, .计算结果 ) // 将计算结果存入线程变量 结束线程() // 结束当前线程 ``` 在这个例子中,`.线程函数`是线程执行...

    C++ 如何正确的使用线程 释放线程资源

    这样做的好处是其他线程可以得到线程执行的结果。但如果不及时进行pthread_join(),可能会导致资源泄露,因为线程资源仍然占用,直到pthread_join()被调用。 2. **Detached状态**:当线程创建时被设置为detached...

    通过多线程任务处理大批量耗时业务并返回结果

    `CompletionService`通过`Future`接口返回每个任务的结果,使得我们可以在任务完成的瞬间得到结果,而无需等待所有任务执行完毕。这对于处理大批量任务并需要实时处理结果的场景非常有用。 在提供的`ThreadDemo`...

    MFC 工作者线程 线程

    4. **线程同步**:在工作者线程中处理完数据后,可能需要将结果返回给主线程。此时,需要使用同步机制,如`CSemaphore`、`CCriticalSection`或者`CEvent`,以确保数据安全地在两个线程间传递,避免竞态条件。 5. **...

    java并发(二十四)多线程结果组装

    通过提交任务给`ExecutorService`,我们可以得到一个`Future`对象,这个对象提供了检查任务是否完成、获取结果或者取消任务的方法。 例如,可以使用`Callable`接口来定义一个返回结果的线程任务,然后用`...

    fio多线程影响IOPS

    I/O深度是指一个线程可以同时提交多少个I/O请求。 - `bs=4k`: 表示每个I/O请求的大小为4KB。 - `direct=1`: 表示使用直接I/O模式,绕过标准缓存机制直接与设备交互。 - `rw=randrw`: 表示读写模式为随机读写。 ####...

    线程——基本线程的应用和线程调用控件

    - 响应性:UI线程可以快速响应用户操作,而后台线程处理耗时任务,避免程序卡顿。 - 资源共享:线程间可以直接访问同一进程的内存,减少数据交换开销。 3. **线程的创建与管理**: - 在许多编程语言中(如Java、...

    简单多线程程序

    4. **线程优先级**:某些系统允许为线程设置优先级,高优先级的线程可能获得更多的CPU时间。然而,过度依赖优先级可能导致优先级反转和优先级继承问题,因此在实际应用中应谨慎使用。 5. **线程池**:为了避免频繁...

    CSharp多线程简单实例

    `lock`是最常用的一种,用于确保同一时间只有一个线程可以访问特定代码块: ```csharp lock (obj) { // 临界区代码,只有获得锁的线程才能执行 } ``` 3. **后台线程(Background Threads)**: 默认情况下,...

    windows线程

    当线程获得执行权时,它会调用指定的线程函数开始执行。线程函数是线程的入口点,它定义了线程执行的任务。例如,我们可以在线程函数中实现I/O操作、计算任务或其他特定功能。 在多线程环境中,数据同步和互斥是...

    Java多线程的总结

    此外,还可以通过实现Callable接口并使用FutureTask包装来创建可返回结果的线程。 二、线程的生命周期 线程有新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Terminated)五个状态。理解...

    delphi多线程传递参数及同步二

    // 使用参数执行任务并得到结果 FResult := Format('处理结果: %d', [FParam1]); // 任务完成后触发事件 FEvent.SetEvent; end; function TMyThread.GetResult: string; begin Result := FResult; end; // ...

    Linux线程.pdf

    线程可以通过调用`pthread_exit`函数来终止其自身的执行,函数原型如下: ```c void pthread_exit(void *retval); ``` 其中`retval`参数是线程退出时的返回值,可用于传递线程执行的结果,供其他线程或主线程获取...

    使用多线程模拟火车站售票系统

    1. **互斥量(Mutex)**:互斥量提供了一种独占访问资源的方式,同一时间只有一个线程可以持有互斥量并访问资源。在C++中,我们可以使用`std::mutex`来实现。当一个线程获得互斥锁后,其他尝试获取的线程将被阻塞,...

    python使用threading获取线程函数返回值的实现方法

    为了解决这个问题,作者创建了一个名为`MyThread`的类,这个类封装了多线程执行和结果收集的功能。 `MyThread`类的构造函数接受一个可选参数`func_list`,这是一个列表,每个元素是一个包含`func`(函数引用)和`...

    易语言线程安全之原子锁与读写锁

    2. 当有线程持有读锁时,其他线程可以继续获取读锁,但不能获取写锁。 3. 当有线程持有写锁时,其他线程既不能获取读锁,也不能获取写锁。 4. 持有锁的线程释放锁后,其他线程按照等待顺序获取锁。 在易语言中,...

    线程锁的用法

    在Windows系统编程中,`CCriticalSection`类是实现线程锁的一种方式,它提供了一种线程同步机制,确保同一时间只有一个线程可以访问特定的代码段或数据。 `CCriticalSection`是Microsoft的Active Template Library ...

Global site tag (gtag.js) - Google Analytics