Tôi mới làm quen với các chủ đề Java. Những gì tôi đang cố gắng làm là từ đối tượng ThreadB được truy cập vào thể hiện của một luồng đang chạy, ThreadA và gọi phương thức của nó được gọi là setSomething. 1) Tôi nghĩ rằng tôi đang làm khó hơn nó thực sự là 2) Tôi có một ngoại lệ con trỏ null vì vậy tôi phải làm điều gì đó sai khi truy cập phương pháp đóCách truy cập một phương thức từ một chuỗi đang chạy khác trong java
Đây là những gì tôi có cho đến nay và tôi đã làm siêng năng và nhìn ở đây trên StackOverflow cho một câu hỏi tương tự.
Tôi có một đề tài hiện đang chạy trong nền:
// 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<Thread> 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**
}
}
Cảm ơn bạn trước
Allen
Có thực sự không có cách nào để bạn có thể vượt qua 'ThreadA' đối tượng _into_' ThreadB' vì vậy bạn có thể truy cập trực tiếp. Làm một số phản ánh hack từ lớp là _not_ tối ưu. – Gray
Và khi bạn nói "bắt đầu bởi một ứng dụng khác", bạn không có nghĩa là trong một JVM khác nhau, phải không? Nếu nó nằm trong một JVM khác thì bạn sẽ phải sử dụng RMI hoặc một số giao tiếp giữa các quá trình khác. Hoặc chia sẻ một tập tin hoặc một cái gì đó. – Gray
Nhận xét thứ hai của Gray phải là câu trả lời được chấp nhận! –