java线程传值的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 00:01:37
我现在有类A,有一个线程类B,线程B有个方法是读取邮件内容的方法,然后run()方法里就是不断的调取读这个方法,当读到有效数据(也就是我想要的数据时,线程停止)。我想问的是有什么办法能让这个有效数据传递给类A当中去,我试过N中方法传过去的都是NULL。
类似代码:
class B implements Runnable{
读取邮件的方法(){
......
}
线程停止的方法(){
......
}
run(){
while(true){
if(读取邮件的方法()是我想要的数据){
把读到数据用变量保存起来传递给类A -----就是这里应该怎么写

线程停止的方法();
}
}
}
}
效果就是能让类A中方法直接可以读取这到数据,有可能读的是空数据,也有可能读到有效数据
class A{

}

把那些对象类型的变量定义为 static 类型

或者,有一个线程间传值得方法,管道技术,不知道你有没有接触这方面的内容:
Java中利用管道实现线程间的通讯
管道(pipe)流是一种特殊的流,用于在不同线程(threads)间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。通过使用管道,实现不同线程间的通讯。
你可以搜艘县官的内容,相信对你有帮助

你是在哪启动这个线程的?
你可以写个方法返回你要得到的数据被
没必要是静态属性..反正你里面写的是无限循环 当遇到值的时候就可以执行方法 把值传给本身属性 然后在把本身属性传给启动线程的类

如果说是你线程自己启动自己... 那就得用静态属性传给其他类了..

最简单的方法是你在B的构造函数里把A作为参数传进来,拿到A的对象,然后就可以在B中直接调用A了。

示例:
class B implements Runnable{

A a;

B(....,A a) {//B的构造函数
this.a = a;
}
读取邮件的方法(){
......
}
线程停止的方法(){
......
}
run(){
while(true){
if(读取邮件的方法()是我想要的数据){
把读到数据用变量保存起来传递给类A

这里就能直接调了:
a.参数 = 想要的数据;

线程停止的方法();
}
}
}
}

大至是这个意思,但是这种方法不太规范,当类数量太多时会造成混乱,所以最好能找跟规范的方法去做。

在A类里写一个接收数据的方法就好receive(Object obj)
然后在线程中new一个A类对象并调用这个方法把数据当成参数传进去就好