zero's blog


  • Home

  • Posts

  • About

  • Search
close

Multiple Thread 02

Published at: 2021-01-22   |   Categories: java     |   Reading: 114 words ~1min

Java のスレッド

javaスレッドのlife cycle

thread life cycle

スレッドの生成方法

implements Runnable

  • 実行結果を返却しない

extends Thread

  • 実行結果を返却しない

Callable + Future or Callable + FutureTask

  • 実行結果を返却する

  • Callable + Future sample code

 public class CallableTask implements Callable<String> {
    @Override
    public String call() throws Exception {
        System.out.println(Thread.currentThread().getName() +" is running");
        return "execute end";
    }

    public static void main(String[] args) throws Exception {
        CallableTask callableTask = new CallableTask();
        // create execute service
        ExecutorService executorService = Executors.newFixedThreadPool(1);
        // submit
        Future<String> result = executorService.submit(callableTask);
        //get result
        System.out.println(result.get());
        //shutdown
        executorService.shutdown();

    }
}

Future doc

  • Callable + FutureTask sample code
        ..........
        FutureTask<String> futureTask = new FutureTask<>(callableTask);
        new Thread(futureTask).start();
        System.out.println(futureTask.get());

FutureTask doc

スレッドの停止

  • フラグを設置する

スレッドの通知と待ち

待ち(wait())

  • 呼び出したスレッドはそのオブジェクトのウェイトセットに入ります。
    • 注意 synchronized blockの中に呼び出す。
    • synchronized block以外のところから呼び出すすると、throw IllegalMonitorStateException

通知(notify(),notifyAll())

  • そのオブジェクトのウェイトセットにあるスレッドが1つ再開します。
    • 複数の場合、その中の一つを再開します。
    • 注意 synchronized blockの中に呼び出す。
#Multiple Thread#
Multiple Thread 03
Multiple Thread 01
zero

zero

16 Blogs
3 Categories
7 Tags
© 2020 - 2021 zero's blog
Powered by - Hugo v0.81.0
Theme by - NexT
0%