pi-12. 時間, スリープ, 疑似乱数, タイマー

138 Views

January 26, 22

スライド概要

トピックス:Java の標準ライブラリ, 時間, スリープ, 疑似乱数, マルチスレッド, タイマー

Java の基本(スライド資料とプログラム例)(全17回)
https://www.kkaneko.jp/pro/pi/index.html

金子邦彦研究室ホームページ
https://www.kkaneko.jp/index.html

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

pi-12. 時間,スリープ, 疑似乱数,タイマー トピックス:Java の標準ライブラリ,時間,ス リープ,疑似乱数,マルチスレッド,タイマー URL: https://www.kkaneko.jp/pro/pi/index.html (Java の基本,スライド資料とプログラム例) 金子邦彦 1

2.

全体まとめ • Java で標準ライブラリには、次のような機能があ る • スレッド • 時間,タイマー • 疑似乱数 • Java で標準ライブラリの機能を使うとき,標準ラ イブラリのクラスを継承して使う場合がある 2

3.

アウトライン 番号 項目 復習 12-1 Java の標準ライブラリ 12-2 時間、スリープ 12-3 スリープに関する演習 12-4 疑似乱数 12-5 マルチスレッド 各自、資料を読み返したり、課題に取り組んだりも行う この授業では、Java を用いて基礎を学び、マスターする 3

4.

Java などのプログラミング言語の体 験,演習ができるオンラインサービス GDB online http://www.pythontutor.com/ オンラインなので、「秘密にしたいプログラム」を 扱うには十分な注意が必要 4

5.

GDB online で Java を動かす手順 ① ウェブブラウザを起動する ② 次の URL を開く https://www.onlinegdb.com 5

6.

③ 「Language」のところで,「Java」を選ぶ 6

7.

④ ソースコードを入れる ⑤ 実行.実行結果を確認 「Run」をクリック. 7

8.

12-1. Java の標準ライブラリ 8

9.

ライブラリ • 複数のプログラムが共有して使 えるような機能を持ったプログ ラムのこと • プログラミング言語処理系に元 から備わっているライブラリの ことを,標準ライブラリという 9

10.

Java の標準ライブラリの機能 • コレクション (ArrayList, HashMap など) • ラッパクラス(Integer, Double など) • 文字列 (String) • その他 • • • • • • 時間,スリープ 疑似乱数 スレッド 標準入出力 数値処理 ファイル読み書き など 10

11.

12-2. 時間,スリープ 11

12.

時間,スリープ • いまの日時(日付、時刻)を知る • 日時に関する計算 • 処理を一定時間止める(タイミング,一定時間ご との監視など) 12

13.

Java での時間,スリープ • いまの日時(日付、時刻)を知る java.time.LocalDateTime.now() • 日時に関する計算 plusHours(1) 1時間後 plusMinutes(1) 1分後 plusSeconds(1) 1秒後 • 処理を一定時間止める(タイミング,一定時間ごとの 監視など) • Thread.sleep(2000) 2秒止まる. 「2000」とあるのはミリ秒単位 13

14.

演習 資料:15 ~ 17 【トピックス】 • 日時に関する計算 • 処理を一定時間止める 14

15.

日時に関する計算 ① 次のソースコードを入れる ② 実行結果の確認 世界標準時が表示される.9時間ずれている. 15

16.

日時に関する計算 ① 次のソースコードを入れる ② 実行結果の確認 16

17.

処理を一定時間止める ① 次のソースコードを入れる ② 実行結果の確認 2秒止まる 「2000」 とあるのは ミリ秒単位 17

18.

12-3. スリープに関する演習 18

19.

Ball クラスのオブジェクト y 属性 x の値を 2 増やし, 属性 y の値を 3 増やすメソッド move x x 19

20.

演習 資料:21 ~ 25 【トピックス】 • スリープ 20

21.

① 次のソースコードを入れる 次のページに続く 21

22.

② 実行結果の確認 動く前は 0 と0.動いた後は 2 と 3. 22

23.

• 10回動かす for 文,メソッド move • 動かす前に1秒止まる Thread.sleep(1000) 23

24.

③ public class Main の中を次のように書き換える 24

25.

④ 実行結果の確認 1つ表示のたびに, 1秒止まる 25

26.

12-4. 疑似乱数 26

27.

疑似乱数とは • 疑似乱数は,コンピュータによって生成されたラ ンダムな数や数の列 • 「乱数」ということもある 疑似乱数 アルゴリズムにより生成される数である.再現が 可能.その意味で「疑似」 27

28.

演習 資料: 29 【トピックス】 • 疑似乱数 28

29.

① 次のソースコードを入れる nextInt(10) は、0から9までの数(10通り)の中から 1つをランダムに得る 実行のたびに 結果は変わる 29

30.

12-5. マルチスレッド 30

31.

スレッド • スレッドとは,処理の流れのこと. • 複数の処理を並行させたいときには,マルチス レッド(複数のスレッド)で処理を行う 31

32.

通常のプログラム実行 (シングルスレッド) マルチスレッド ここではスレッド数は2. (スレッド数は3以上にもできる)32

33.

演習 資料:34 ~ 41 【トピックス】 • マルチスレッド 33

34.

シングルスレッドの例 ① 次のソースコードを入れる Hello を 100回表示.表示のたびに 1秒止まる. 34

35.

② 実行結果の確認 1つ表示のたびに, 1秒止まる 35

36.

マルチスレッドの例 起動 メイン 別スレッド 36

37.

マルチスレッドの例 ③ 前のソースコードは消して,次のソースコードを入れる Java では標準ライブラリのクラス Thread のサブクラスを定義 run メソッドの中に, 別スレッドでの処 理を書く オブジェクトを生成 新しいスレッドを起動 37

38.

④ 実行結果の確認 2秒ごとに Morning を表示 38

39.

マルチスレッドの例 起動 メイン 別スレッド 別スレッド 39

40.

マルチスレッドの例 ⑤ 前のソースコードに書き加える 40

41.

⑥ 実行結果の確認 2秒ごとに Morning を表示 3秒ごとに Hello を表示 41

42.

関連ページ • Java プログラミング入門 GDB online を使用 https://www.kkaneko.jp/pro/ji/index.html • Java の基本 Java Tutor, GDB online を使用 https://www.kkaneko.jp/pro/pi/index.html • Java プログラム例 https://www.kkaneko.jp/pro/java/index.html 42

43.
[beta]
12-1
class Student {
String id;
String name;
String address;
public Student(String id, String name, String address) {
this.id = id;
this.name = name;
this.address = address;
}
public void printout() {
System.out.printf("%s %s %s", this.id, this.name, this.address);
}
};
public class Main
{
public static void main(String[] args) {
Student k = new Student("t001", "kaneko", "matsunaga");
k.printout();
}
}

43

44.

12-2 public class Main { public static void main(String[] args) { java.time.LocalDateTime d; d = java.time.LocalDateTime.now(); System.out.println(d); } } ----------------------public class Main { public static void main(String[] args) { java.time.LocalDateTime d; d = java.time.LocalDateTime.now(); System.out.println(d); System.out.println(d.plusHours(1)); System.out.println(d.plusMinutes(1)); System.out.println(d.plusSeconds(1)); } } ----------------------public class Main { public static void main(String[] args) { java.time.LocalDateTime d; d = java.time.LocalDateTime.now(); System.out.println(d); try { Thread.sleep(2000); } d = java.time.LocalDateTime.now(); System.out.println(d); } } 44

45.
[beta]
12-3
class Ball {
double x;
double y;
public Ball(double x, double y) {
this.x = x;
this.y = y;
}
public void move() {
this.x = this.x + 2;
this.y = this.y + 3;
}
public void printout() {
System.out.printf("%f %f\n", this.x, this.y);
}
};

public class Main
{
public static void main(String[] args) {
Ball b = new Ball(0, 0);
k.printout();
}
}
-----------------------------class Ball {
double x;
double y;
public Ball(double x, double y) {
this.x = x;
this.y = y;
}
public void move() {
this.x = this.x + 2;
this.y = this.y + 3;
}
public void printout() {
System.out.printf("%f %f\n", this.x, this.y);
}
};
public class Main
{
public static void main(String[] args) {
Ball b = new Ball(0, 0);
b.printout();
for(int i = 1; i <= 10; i++) {
try {
Thread.sleep(1000);
} catch(InterruptedException e) {}
b.move();
b.printout();
}
}
}

45

46.

12-4 public class Main { public static void main(String[] args) { int a; java.util.Random r = new java.util.Random(); a = r.nextInt(10); System.out.println(a); } } 46

47.
[beta]
12-5
class Morning extends Thread {
public void run() {
for(int i = 0; i < 50; i++) {
try {
Thread.sleep(2000);

} catch(InterruptedException e) {}
System.out.println("Morning");
}
}

}

public class Main
{

public static void main(String[] args) {
Morning m = new Morning();
m.start();
}

}

47

48.
[beta]
12-5
class Morning extends Thread {
public void run() {
for(int i = 0; i < 50; i++) {
try {
Thread.sleep(2000);
} catch(InterruptedException e) {}
System.out.println("Morning");
}
}
}
class Hello extends Thread {
public void run() {
for(int i = 0; i < 50; i++) {
try {
Thread.sleep(3000);
} catch(InterruptedException e) {}
System.out.println("Hello");
}
}
}
public class Main
{
public static void main(String[] args) {
Morning m = new Morning();
m.start();
Hello h = new Hello();
h.start();
}
}

48