演習課題「newSingleThreadScheduledExecutorを使ってみよう1」
newSingleThreadScheduledExecutorのscheduleメソッドを用いて、t1を実行直後と3秒後に実行されるようにしてください。また、5秒後にshutdown()されるようにしてください。
なお、コンパイルコマンドについて理解できれいれば、以下のコマンドをコピーして利用してください。
javac -d classes/jp.paiza.thread -p classes source/jp.paiza.thread/module-info.java source/jp.paiza.thread/jp/paiza/thread/TEST.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
java -p classes --module jp.paiza.thread/jp.paiza.thread.TEST
期待する出力値
開始:0秒
3秒
演習課題「newSingleThreadScheduledExecutorを使ってみよう2」
newSingleThreadScheduledExecutorのscheduleAtFixedRateメソッドを用いて、t1を即時実行後、2秒間隔で実行されるようにしてください。また、5秒後にshutdown()されるようにしてください。
なお、コンパイルコマンドについて理解できれいれば、以下のコマンドをコピーして利用してください。
javac -d classes/jp.paiza.thread -p classes source/jp.paiza.thread/module-info.java source/jp.paiza.thread/jp/paiza/thread/TEST.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
java -p classes --module jp.paiza.thread/jp.paiza.thread.TEST
期待する出力値
開始:0秒
2秒
4秒
演習課題「newSingleThreadScheduledExecutorを使ってみよう3」
newSingleThreadScheduledExecutorのscheduleWithFixedDelayメソッドを用いて、実行に1秒かかるt1を即時実行後、2秒間隔で実行されるようにしてください。また、5秒後にshutdown()されるようにしてください。
なお、コンパイルコマンドについて理解できれいれば、以下のコマンドをコピーして利用してください。
javac -d classes/jp.paiza.thread -p classes source/jp.paiza.thread/module-info.java source/jp.paiza.thread/jp/paiza/thread/TEST.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
java -p classes --module jp.paiza.thread/jp.paiza.thread.TEST
期待する出力値
開始:0秒
2秒
4秒
#04:Executorフレームワーク3(ScheduledExecutorService)
このチャプターでは、ExecutorフレームワークにおけるScheduledExecutorServiceついて学習します。
ブラウザを開くだけでエディタ、Webサーバ、DB等の開発環境が整うクラウド開発環境PaizaCloudクラウドIDE。
PaizaCloud
https://paiza.cloud/ja/
シェルコマンド入門編
https://paiza.jp/works/shellcommand/primer
Linux入門編
https://paiza.jp/works/linux/primer
新・Linux入門編(LinuC対策版)
https://paiza.jp/works/linux/new-primer
新・Java入門編33: ストリームAPIについて学習しよう > 関数型インターフェース(Functional Interface)
https://paiza.jp/works/java/new-primer/java-new-primer-33/102000
新・Java入門編33: ストリームAPIについて学習しよう > ラムダ式
https://paiza.jp/works/java/new-primer/java-new-primer-33/102002
新・Java入門編34: モジュール・システムについて学習しよう
https://paiza.jp/works/java/new-primer/java-new-primer-34
インタフェースScheduledExecutorService
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html
インタフェースScheduledFuture
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/util/concurrent/ScheduledFuture.html
インタフェースDelayed
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/util/concurrent/Delayed.html
列挙型クラスTimeUnit
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/util/concurrent/TimeUnit.html
コンパイルコマンドjavac -d classes/jp.paiza.thread -p classes source/jp.paiza.thread/module-info.java source/jp.paiza.thread/jp/paiza/thread/*.java
実行コマンドjava -p classes --module jp.paiza.thread/jp.paiza.thread.A
A.java schedule(Runnable, long, TimeUnit)package jp.paiza.thread;
import java.time.*;
import java.time.format.*;
import java.util.concurrent.*;
public class A {
public static void main(String... args) {
Runnable t1 = () -> {
try {
println("-");
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {}
};
Callable<Boolean> t2 = () -> {
println("-");
return true;
};
var scheduler = Executors.newSingleThreadScheduledExecutor();
println("start");
scheduler.schedule(t1, 5, TimeUnit.SECONDS);
scheduler.schedule(() -> scheduler.shutdown(), 15, TimeUnit.SECONDS);
}
/**
* 時間を付与して文字列を出力
*/
static void println(Object msg) {
System.out.println(
LocalDateTime.now().format(
DateTimeFormatter.ofPattern("mm:ss:n")) + " " + msg);
}
}scheduleAtFixedRate(Runnable, long, long, TimeUnit)package jp.paiza.thread;
import java.time.*;
import java.time.format.*;
import java.util.concurrent.*;
public class A {
public static void main(String... args) {
Runnable t1 = () -> {
try {
println("-");
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {}
};
Callable<Boolean> t2 = () -> {
println("-");
return true;
};
var scheduler = Executors.newSingleThreadScheduledExecutor();
println("start");
scheduler.scheduleAtFixedRate(t1, 0, 5, TimeUnit.SECONDS);
scheduler.schedule(() -> scheduler.shutdown(), 15, TimeUnit.SECONDS);
}
/**
* 時間を付与して文字列を出力
*/
static void println(Object msg) {
System.out.println(
LocalDateTime.now().format(
DateTimeFormatter.ofPattern("mm:ss:n")) + " " + msg);
}
}scheduleWithFixedDelay(Runnable, long, long, TimeUnit)package jp.paiza.thread;
import java.time.*;
import java.time.format.*;
import java.util.concurrent.*;
public class A {
public static void main(String... args) {
Runnable t1 = () -> {
try {
println("-");
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {}
};
Callable<Boolean> t2 = () -> {
println("-");
return true;
};
var scheduler = Executors.newSingleThreadScheduledExecutor();
println("start");
scheduler.scheduleWithFixedDelay(t1, 0, 5, TimeUnit.SECONDS);
scheduler.schedule(() -> scheduler.shutdown(), 15, TimeUnit.SECONDS);
}
/**
* 時間を付与して文字列を出力
*/
static void println(Object msg) {
System.out.println(
LocalDateTime.now().format(
DateTimeFormatter.ofPattern("mm:ss:n")) + " " + msg);
}
}schedule(Callable, long, TimeUnit)package jp.paiza.thread;
import java.time.*;
import java.time.format.*;
import java.util.concurrent.*;
public class A {
public static void main(String... args) {
Runnable t1 = () -> {
try {
println("-");
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {}
};
Callable<Boolean> t2 = () -> {
println("-");
return true;
};
var scheduler = Executors.newSingleThreadScheduledExecutor();
println("start");
var result = scheduler.schedule(t2, 5, TimeUnit.SECONDS);
scheduler.schedule(() -> scheduler.shutdown(), 15, TimeUnit.SECONDS);
try {
println(result.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
/**
* 時間を付与して文字列を出力
*/
static void println(Object msg) {
System.out.println(
LocalDateTime.now().format(
DateTimeFormatter.ofPattern("mm:ss:n")) + " " + msg);
}
}