Thread.getId

Thread.getIdで、スレッドIDを取得できる。

Thread (Java Platform SE 6)

CustomThreadの生成、実行、CustomThreadのrun内で、スレッドIDを取得してみる。

CustomThreadの中はこれだけ。

MainClassは、ctの生成と、ct.startの実行時。

CustomThread before.
[1]:ct.getId() = 9
[2]:ct.getId() = 9
CustomThread after.
[3]:getId() = 9
Thread.sleep before
Thread.sleep after

全部、同じスレッドID。

Sample/java/Thread/getId/src/Thread at master · bg1bgst333/Sample · GitHub

Thread

Threadを新しく生成して実行する方法はいくつかあるが、今回はThreadを継承した派生クラスを作る。

Thread (Java Platform SE 6)

runで3秒休止。

こうすると、

CustomThread before.
CustomThread after.
Thread.sleep before

最初こうだが、3秒経つと、

Thread.sleep after

が出て、外側の方はすぐ終了し、sleep後はあとから出力されるのがわかった。

Sample/java/Thread/Thread/src/Thread at master · bg1bgst333/Sample · GitHub

Thread.sleep

Thread.sleepで、スレッドを休止させる。

Thread (Java Platform SE 6)

カレントスレッドを休止させることで、ただただ処理を3秒止める。

tryで囲まなきゃいけない。

Thread.sleep before

と出て3秒経つと、

Thread.sleep after

と出る。

Sample/java/Thread/sleep/src/Thread at master · bg1bgst333/Sample · GitHub

Observable<T>.create

Observable<T>.createでは、指定された動作をするオブザーバブルを作成できる。
from, just, rangeより複雑な発行動作をさせたいという場合が一般的らしいので、大抵はこれを使うらしい。
Reactive ExtensionsのObservable.Createと同じ。
(1.2.7でdeprecated。ただし、2系からは再びこの形式で推奨らしい。)

Observable (RxJava Javadoc 1.3.8)

Observable.OnSubscribeのcallの中で1から3を発行して完了。

1
2
3
Completed!

となる。

Sample/rxjava/Observable_T/create/src/Observable_T at master · bg1bgst333/Sample · GitHub

Observable<T>.map

Observable<T>.mapで、さらなる加工を加える。

Observable (RxJava Javadoc 1.3.8)

偶数で絞り込んだら、さらにその値を2倍する。

こうすると、

4
8
12
16
20
Completed!

2倍になった。

Sample/rxjava/Observable_T/map/src/Observable_T at master · bg1bgst333/Sample · GitHub

Observable<T>.filter

Observable<T>.filterで、発行する値を絞り込む。

Observable (RxJava Javadoc 1.3.8)

C#LINQのWhereと同じ。

ラムダ式で2で割った余りが0と条件を付ける。
つまり偶数。

2
4
6
8
10
Completed!

偶数に絞れた。

Sample/rxjava/Observable_T/filter/src/Observable_T at master · bg1bgst333/Sample · GitHub