Webエンジニア、ソーシャルメディア研究をしている雄大です。
2012年ということで、Javaの基礎の基礎から、お勉強しています。
さて、threadを使った処理を書いて見ました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <spanclass="keyword">class</span>Cars<spanclass="keyword">extends</span>Thread{ <spanclass="keyword">private</span>Stringname; <spanclass="keyword">public</span>Cars(Stringnm){ name=nm; } <spanclass="keyword">public</span><spanclass="keyword">void</span>run(){ <spanclass="keyword">for</span>(<spanclass="keyword">int</span>i=<spanclass="num">0</span>;i<<spanclass="num">10</span>;i++){ System.out.println(name+<spanclass="str">"の処理をしています。"</span>); } } } <spanclass="keyword">public</span><spanclass="keyword">class</span>Samplethread{ <spanclass="keyword">public</span><spanclass="keyword">static</span><spanclass="keyword">void</span>main(String[]args){ Carscars=<spanclass="keyword">new</span>Cars(<spanclass="str">"1号車"</span>); cars.start(); <spanclass="keyword">for</span>(<spanclass="keyword">int</span>i=<spanclass="num">0</span>;i<<spanclass="num">10</span>;i++){ System.out.println(<spanclass="str">"main"</span>); } } } |
簡単なソースを説明をすると、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
…
と、並列に動いていることがわかりました。
コメント