メソッドから2つの異なるタイプの変数(Future、ExecutorService)を返す必要があります。どうすれば一緒に移動できますか?これがコードの一部です。クラスAがあり、「B」クラスでrun()メソッドを呼び出そうとしています。「startExecutorService」はthreadExecutorを開始するメソッドであり、「stopExecutorService」はthreadExecutorを停止するメソッドです。
public class A{
public static void main(String[] args){
A AObj= new A();
Future<?> task = null;
ExecutorService threadexec = null;
task = AObj.startExecutorService(task, threadexec);
AObj.stopExecutorService(task, threadexec);
}
public Future<?> startExecutorService(Future<?> control, ExecutorService threadExecutor){
//'noOfThreads' determines the total no of threads to be created in threadpool
int noOfThreads = 1;
// Creating an object for class 'B' which has the run() method
B ThreadTaskOne = new ExecutorServiceThreadClass();
// Calling the ExecutorService to create Threadpool with specified number of threads
threadExecutor = Executors.newFixedThreadPool(noOfThreads);
// Creating a Future object 'control' and thereby starting the thread 'ThreadTaskOne'
control = threadExecutor.submit(ThreadTaskOne);
return control;
}
public void stopExecutorService(Future<?> task, ExecutorService threadExecutor){
// Interrupting the thread created by threadExecutor
task.cancel(true);
if(task.isCancelled()){
System.out.println("Task has been cancelled !!");
}
// Closing the threadExecutor
threadExecutor.shutdownNow();
}
}
'threadExecutor.shutdownNow();'の行の'stopExecutorService'メソッドで'NullPointerException'を取得しています。'このエラーの理由は、threadExecutor値がmainメソッドで変更されていないためです。'startExecutorService'メソッドでのみ変更されています。そこで、threadExecutorの変更された値をFutureとともにmainメソッドに戻したいと思います。
親切に私を助けてください