我是
Java Threads的新手.我想要做的是从ThreadB对象获得对当前运行的线程(ThreadA)的实例的访问,并调用其名为setSomething的方法.
1)我认为我比实际做得更努力
2)我有一个空指针异常,因此访问该方法时我必须做错事
这是我到目前为止所做的,我已经完成了尽职调查,并在StackOverflow上查看了类似的问题.
我有一个当前的Thread在后台运行:
// assume this thread is called by some other application
public class ThreadA implements Runnable{
private Thread aThread;
public ThreadA(){
aThread = new Thread(this);
aThread.setName("AThread");
aThread.start();
}
@Override
public void run(){
while(true){
// doing something
}
}
public void setSomething(String status){
// process something
}
}
// assume this thread is started by another application
public class ThreadB implements Runnable{
@Override
public void run(){
passAValue("New");
}
public void passAValue(String status){
// What I am trying to do is to get the instance of ThreadA and call
// its method setSomething but I am probably making it harder on myself
// not fully understanding threads
Method[] methods = null;
// get all current running threads and find the thread i want
Set threadSet = Thread.getAllStackTraces().keySet();
for(Thread t : threadSet){
if(t.getName().equals("AThread")){
methods = t.getClass().getMethods();
}
}
//**How do I access ThreadA's method, setSomething**
}
}
先感谢您
艾伦