マルチスレッドの作成スレッドの一つの方法:Callableインターフェースを実現する(三)


マルチスレッドについては、よく知られていません。スレッドをどのように作成するかについても、new threadを使って、ルナブルインターフェースを実現する方法については、これ以上説明しません。このブログでは、Callableインターフェースの実現を紹介します。
記事の目次
  • Callableインターフェース
  • 簡単な例
  • 総括
  • Callableインターフェース
    インターフェースの定義:
    @FunctionalInterface
    public interface Callable {
        V call() throws Exception;
    }
    
    Callableの定義から:
  • Callableインターフェースは、Runnableと類似しており、その両方は、他のスレッドによって実行されるかもしれない種類のために設計されており、方法は戻り値を有してもよく、例外を投げることができる。でもRunnableはだめです。
  • Callableは、演算結果を受信するためにFutureTaskに依存する必要がある。一つは結果を生み、一つは結果を得る。FutureTaskはFutureインターフェースの実装クラスであり、閉塞としても使用できます。
  • 簡単な例
    0から100までを加算して、結果を返します。
    public class TestCallable {
    
    	public static void main(String[] args) {
    
    		CallableThreadDemo ctd = new CallableThreadDemo();
    		
    		//1.  Callable  ,  FutureTask      ,        
    		FutureTask result = new FutureTask(ctd);
    		
    		new Thread(result).start();
    		
    		//2.          
    		try {
    			Integer sum = result.get(); //FutureTask      
    			
    			System.out.println(sum);
    		} catch (InterruptedException | ExecutionException e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    class CallableThreadDemo implements Callable{
    
    	@Override
    	public Integer call() throws Exception {
    		int sum = 0;
    		
    		for (int i = 0; i <= 100; i++) {
    			sum += i;
    		}
    		return sum;
    	}
    }
    
    締め括りをつける
    Callableインターフェースは実はとても簡単で、マルチスレッド環境の中で、結果を返します。
    次のブログでは、マルチスレッドの安全問題をどう解決するかを検討します。