急求:java 如何获得线程运算的结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急求:java 如何获得线程运算的结果相关的知识,希望对你有一定的参考价值。

如题,因为是多线程并行计算,而线程的run()方法不提供返回值,我该怎么获得线程的运算结果呢?即,一个线程运行结束返回给主函数一个结果,并行计算的线程返回的结果是一个矩阵的元素。请大虾指教~

在main方法中创建一个数组。
所有线程类的构造方法都需要一个数组做参数。线程体结束时给数组中的某个元素赋值。
public void run()
......
a[i] = ......;

main方法中等待所有线程结束后打印数组。
t1.join();
参考技术A 我不敢确定我说的对啊 首先想从run里拿出结果 无非就是在外面设置一个静态的全局变量。另外Thread这个类里 可以取得很多当前线程的信息 比如Thread.currentThread().* 这个*里有很多可以get 和set的方法也许你用的上 参考技术B 线程相当于异步会话,和主函数没有同步执行。

所以要让线程返回的数据在主函数中同步执行是存在问题的。

你可以再建一个守护线程,来监控你多线程返回的数据,多线程返回的数据可以通过系统静态变量来记录。

具体只能和你说这么多了,不知道你的业务是个什么业务。
参考技术C 在线程中放入方法吧,方法中有返回值就得了。 参考技术D 加个类变量就可以

急求c++代码。。。大数运算,包括(+ - * / %),用类实现。。。

输入描述:
输入数据由若干组数据,每组数据由一个运算符(+ - * / %)和两个整数构成,整数范围在-10150~10150之间,如果运算符晕倒‘@’,则表示运行结束。
输出描述
对于每组数据,输出其运算符序号和运算结果,其中的‘/’为整除运算。每个结果单独成行。
如果运算结果超过200位,则应输出“Too Large Number。”
如果输入整数空,或者有前导0,则应输出“Illegal Number。”
如果输入符号不是上述的物种运算符之一,则输出”Illegal Opeartor”,并在输入操作上,应跳过后续的两个操作符。
如果除0,则应输出“Divide By Zero.:”

参考技术A 如果你想学习大数运算的编程的话,你应该学习GMP库的用法,这个是非常优秀的大数运算程序库,GMP是用C语言写成的。学会怎么用之后,利用C++的运算符重载技术,把这些C的函数封装成类,这样就完成了你的要求。
如何封装,这个在GMP的官方网站上有详细的说明,自己去看吧 gmplib.org追问

可是我想要个代码先看看,用c++的。。。

追答

这个是我从gmplib.org 直接copy下来的例子,1分钟就能看明白,自己看吧。要是连搜索引擎都懒得用,还是别学编程了吧

#include
int main (void)

mpz_class a, b, c;

a = 1234123412341234;
b = "-5678567856785678";
c = a+b;
cout << "sum is " << c << "\n";
cout << "absolute value is " << abs(c) << "\n";

return 0;

追问

我想问一下,你编程怎么样啊?其实每次有不懂的都是google的。。。所以搜索引擎都懒得用这不是问题。。。

本回答被提问者采纳

以上是关于急求:java 如何获得线程运算的结果的主要内容,如果未能解决你的问题,请参考以下文章

Java 内存模型与线程

如何将 IN 运算符与 LIKE 条件相结合(或获得可比较结果的最佳方法)

Simple Java面试问题-使用Java线程做数学运算

Java虚拟机--内存模型与线程

第五篇 JAVA运算符

java中如何实现字符与数字加减运算