Javaにおいて引数付でスレッドを走らせる

C#なら色々引数を渡す手段を知っているのですがJavaでは引数を持てるAPIが見つかりませんでした。そこで調べてみたところクラスのフィールドにセットしておけとのことだったので頑張ってみましたが、うまく行くまで時間がかかってしまったのでブログに投稿しました。

[実行部(使い方)]
new Thread(new ParameterizedRunner<Integer>(
       new Runnable1<Integer>() {
            @Override 
            public void run(Integer ags) {
                try {
                    Thread.sleep(ags);
                } catch (InterruptedException e) {}
            }
        }, 1234)).run();

[パラメータを受け取るRunbaleの実装クラス]
private class ParameterizedRunner<TArg> implements Runnable{
    private Runnable1<TArg> task;
    private TArg arg;
    public ParameterizedTRunner(Runnable1<TArg> task,TArg arg){
        this.task =task;
        this.arg = arg;
    }
    
    @Override
    public void run() {
        task.run(arg);
    }
}

[引数をひとつ受け取って実行するインターフェス]
public interface Runnable1<TAgs> {
    void run(TAgs ags);
}

コメント

このブログの人気の投稿

初めてのC# -メモ帳でも作ってみる?-

【ファイル偽装】zipとしてもjpgとしても扱えるファイル