![]() |
スレッド・簡単な例 |
スレッド(thread)の英単語を知れべても糸のような訳しかなくイマイチわかりません。
これはコンピュータ関係の独特の機能です。スレッドが使われる代表的な事例が
通信です。![]() このような処理の流れで通信処理は相手が通信でデータを送ってくるまで、通信ポート を監視していてモーター処理がいつ実行できるのかわかりません。通信処理で止まって いて実行されないかもしれません。 そこでスレッドの出番です。 ![]() スレッドで受信データを監視してデータを受信したら受信処理に知らせます。データがあれば 処理をして次のモーター処理を実行します。処理の流れと並行して受信のスレッドが実行されます。 分かったようで分からないので実際のコードで説明します。 スレッドはThreadクラスを継承して実装します。サンプルとしてThreadSimpleというクラスを作ります。 package com.example.thread; import android.util.Log; public class ThreadSimple extends Thread{ //スレッドを識別するためにnameフィールドを設定する private String myName; //スレッド名を設定 コンストラクター public ThreadSimple(String name){ myName = name; } //スレッドの実処理 public void run(){ for(int i= 0; i <= 50; i++){ Log.d(myName, "count = " + i); } } }スレッドの実処理は public void run()です。 このスレッドでは50回カウントすると終了します。Logcatで実行の様子がわかります。 次にMainActivityです。 package com.example.thread; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { private ThreadSimple th1 = new ThreadSimple("Thread_1"); private ThreadSimple th2 = new ThreadSimple("Thread_2"); private ThreadSimple th3 = new ThreadSimple("Thread_3"); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); th1.start(); th2.start(); th3.start(); Log.d("MainActivity", "MainActivity is finished."); } }ThreadSimpleのインスタンスth1,th2,th3を作成します。 そして各インスタンスをstart()させます。結果は、
MainActivityが終了した後、th1,th2,th3が動作しています。無秩序にスレッドが動作しています。
|