Webエンジニア、ソーシャルメディア研究をしている雄大です。
2012年ということで、Javaの基礎の基礎から、お勉強しています。
さて、threadを使った処理を書いて見ました。
class Cars extends Thread{ private String name; public Cars(String nm){ name = nm; } public void run(){ for(int i=0; i < 10; i++){ System.out.println(name + "の処理をしています。"); } } } public class Samplethread { public static void main(String[] args) { Cars cars = new Cars("1号車"); cars.start(); for(int i = 0; i < 10; i++){ System.out.println("main"); } } }
簡単なソースを説明をすると、startメソッドは、CarsクラスがThreadクラスから継承したメソッドで、
このメソッドが呼び出されると、新しいスレッドが起動して、その最初の処理としてrun()メソッドの処理が行われます。
さて、実行結果は下記になりました。
main
main
main
main
main
main
main
main
main
main
1号車の処理をしています。
1号車の処理をしています。
1号車の処理をしています。
1号車の処理をしています。
1号車の処理をしています。
1号車の処理をしています。
1号車の処理をしています。
1号車の処理をしています。
1号車の処理をしています。
1号車の処理をしています。
新しいスレッドを起動している間にmainの処理が終わっています。。。これだと、本当に処理の流れが2つになっているのかわからない。
ということで、for文のところを1000回ループに変更して、再度実行していました。さすがに、2000行になるので、実行結果は書きませんが、
…
main
1号車の処理をしています。
main
…
と、並列に動いていることがわかりました。
コメント