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

可以获得结果的线程

阅读更多

       在做一个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
分享到:
评论

相关推荐

    C#线程锁介绍源码

    1.几种同步方法的区别 lock和Monitor是.NET用一个特殊结构实现的,Monitor...这在抢先多线程操作系统中是很重要的,在这样的操作系统中,线程可以在从某个内存地址加载值之后但是在有机会更改 和存储该值之前被挂起。

    线程超时死掉

    Future接口提供方法来检测任务是否被执行完,等待任务执行完获得结果,也可以设置任务执行的超时时间。这个设置超时的方法就是实现Java程 序执行超时的关键。 Future接口是一个泛型接口,严格的格式应该是Future...

    FutureTask底层实现分析,有了FutureTask主线程要想获得工作线程(异步计算线程)的结果变得比较简单

    FutureTask底层实现分析,有了FutureTask主线程要想获得工作线程(异步计算线程)的结果变得比较简单

    Linux系统编程之线程同步

    线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 举例1: 银行存款 5000。柜台,折:取3000;提款机,卡:取 3000。剩余:2000 举例2...

    linux线程同步.pdf

    线程安全意味着当多个线程访问共享资源时,程序的行为是可预测的,不会出现不一致或错误的结果。线程同步可以防止数据竞争、避免死锁和饥饿等问题。数据竞争是指两个或多个线程同时访问同一个共享资源,并且至少有一...

    线程编程方面若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。

    调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一...

    多线程并发代码的IntelliJ IDEA中调试方法.docx

    上面的代码解释 开启两个线程,“Thread 1”计算(100!)和“Thread 2”计算(100000!...最后将两个线程的计算结果相加,得到100! + 100000! 下面就让我们使用IntelliJ IDEA工具来调试这段多线程的代码。

    多线程,高并发.zip

    结果很难检查出 真正的问题所在。 suspend() 方法容易发生死锁。调用 suspend() 的时候,目标线程会停下来,但却仍 然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被 "挂 起" 的线程恢复...

    python线程安全及多进程多线程实现方法详解

    一个操作可以在多线程环境中使用,并且获得正确的结果。 线程安全的操作线程是顺序执行的而不是并发执行的。 一般涉及到写操作需要考虑如何让多个线程安全访问数据。 线程同步的方式 互斥量(锁): 通过互斥...

    【Java正来-深入理解JVM】线程安全与优化。xmind思维导图

    线程安全与锁优化:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者再调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果。

    java面试题(线程和JSP及EJB部分).pdf

    1、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runnable 接口 用synchronized 关键字修饰同步方法 反对...

    论文研究-基于交织预取率的帮助线程预取质量调节算法.pdf

    预执行帮助线程在预取过程中需要进行动态预取调节...实验结果表明,所提出的帮助线程预取质量调节算法解决了帮助线程预取过程中的参数值自动调节问题,算法无须静态枚举参数值便可以快速获得与之相近似的预取性能提升。

    多线程综合编程技术经典

    第二部分讨论测试的结果,并且包括对于多线程应用程序设计的建议。与之相关的文章 "Interacting with Microsoft Excel: A Case Study in OLE Automation" 讨论有关该示例程序套件的一个有趣的问题,即使用测试集合所...

    android 多线程多任务断点下载

    //对于UI控件的更新只能由主线程(UI线程)负责,如果在非UI线程更新UI控件,更新的结果不会反映在屏幕上,某些控件还会出错 private void download(final String path, final File dir){ new Thread(new Runnable...

    C++ 串口通讯线程 扫码枪

    通过串口触发扫码枪扫码及接收扫码结果的接口;应用层需要自己写;

    Java线程安全synchronized

     并发编程的原则:设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性(数据准确)问题,如果并发程序连基本的执行结果准确性都无法保证,那并发编程没有任何意义。  为什么会出现数据不...

    iOS-多线程之GCD

    先进先出,后进后出GCD线程队列的创建方法1、创建一个串行队列2、创建一个并发队列3、获得全局并发队列3、获得主队列同步/异步+串行/并发队列的组合1、同步+串行队列打印结果:总结:没有创建新线程,主线程执行任务...

    C#线程同步的几种方法总结

    如果这个问题处理不好,我们就会得到一些非预期的结果。 在网上也看过一些关于线程同步的文章,其实线程同步有好几种方法,下面我就简单的做一下归纳。 一、volatile关键字 volatile是最简单的一种同步方法,当然...

    浅谈Java获得多线程的返回结果方式(3种)

    主要介绍了浅谈Java获得多线程的返回结果方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    XP下的PortReady1.6多线程的端口扫描

    │ -t:thread 线程数目,默认100个线程 │ │ │ │ 例如: │ │ PR.EXE 192.168.0.1 1-65535 -d:1 -e │ │ PR.EXE 192.168.0.1 1-2000 -t:200 -v -b │ │ PR.EXE 192.168.0.1-192.168.9.255 21,3389 -t:200 │ ...

Global site tag (gtag.js) - Google Analytics