从java线程中获得运算结果 - 编程入门网
从java线程中获得运算结果时间:2010-12-08如果有任何的意见、批评或表扬:),请给我来信climber_2002@sina.com java的线程是由Thread来实现的,一般我们创建线程进行一个复杂的运算,然后在主线程中对运算结果进行处理,但是Thread的run函数并没有返回值,那么我们运算出结果后,怎么通知其它线程呢,本文讲述了几种返回信息的方法。 一。java线程的创建 要创建线程有两种办法,一是继承Thread类,二是实现Runnable,然后将其传递给一个Thread的构造函数,实例如下(假设我们要在一个线程中计算1到10000的和): 1。继承Thread:
运行AddThread: AddThread thread = new AddThread(); thread.start(); 2。实现接口Runnable:
运行该线程: Thread thread = new Thread(new Add()); thread.start(); 从java线程中获得运算结果(2)时间:2010-12-08二、返回运算结果的方法 现在我们启动这个加法线程后,需要从这个线程中得到运算的结果,例如我们要在主线程中对运算结果进行显示。那么我们怎么实现呢?下面就讲述几种常见的方法,注意其中有一些是错误的方法 1。使用get方法(错误的) 我们可以在AddThread中加入一个getResult函数得到运算结果:
得到的结果是: result is 0 因为这里主线程和addThread线程是同时运行,AddThread的运算还没有完成(甚至可能还没有开始),主线程就开始输出运算结果了,所以这种方式是错误的。 2。查询法(可行,但效率极低) 第二种方法是使用一个变量hasDone来表示运算是否完成,如果hasDone为false的时候表示运算尚未完成,否则表示运算已经完成。主线程不断查询这个变量,如果发现运算尚未完成,则进入循环等待,否则输出运算结果。
结果显示: result is 50005000 主线程 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |