Java同時プログラミング:スレッドの作成方法
2695 ワード
一.スレッドの作成方法
1.javaを実現する.lang.Runnableインタフェース
2.javaを継承する.lang.Threadクラス
ソース:
ThreadクラスはRunnableインタフェースを実装し,run()メソッドを実装していることがわかる.
RunnableオブジェクトをThreadクラスパラメータとして新しいスレッドを作成するとtargetが実行する.run()は,Runnableソケットクラスで書き換えを実現するrun()メソッドを呼び出す.
2つの方法の例:
スレッド作成方法の2つの比較について:
Javaはクラスのマルチ継承をサポートしていないことは知っていますが、複数のインタフェースを実現することができ、Threadクラスを継承すると、他の親クラスを継承することはできません.
Runnable方式を用いることで,複数のスレッドが同じターゲットオブジェクトを共有し,同じリソースを処理することができ,よりオブジェクト向けの考え方を体現することができる.
1.javaを実現する.lang.Runnableインタフェース
public interface Runnable{
public abstract void run();
}
2.javaを継承する.lang.Threadクラス
ソース:
public class Thread extends Object implements Runnable{
public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}
public void run() {
if (target != null)
target.run();
}
}
ThreadクラスはRunnableインタフェースを実装し,run()メソッドを実装していることがわかる.
RunnableオブジェクトをThreadクラスパラメータとして新しいスレッドを作成するとtargetが実行する.run()は,Runnableソケットクラスで書き換えを実現するrun()メソッドを呼び出す.
2つの方法の例:
public class TwoMethod {
public static void main(String[] args) {
Thread thread = new Thread() {
public void run() {
while(true){
try{
Thread.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println(" ........" + Thread.currentThread().getName());
}
}
};
thread.start();
Thread thread2 = new Thread(new Runnable(){
public void run(){
while(true) {
try{
Thread.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println(" ........." + Thread.currentThread().getName());
}
}
});
thread2.start();
//new Thread(){}.start();
//new Thread(new Runnable(){}).start()
new Thread(new Runnable(){
public void run() {
while(true) {
try{
Thread.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("Runnable~~~~" + Thread.currentThread().getName());
}
}
}){
public void run() { //Thread Runnable , run , Runnable run
while(true) {
try{
Thread.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("thread~~~~" + Thread.currentThread().getName());
}
}
}.start();
}
}
スレッド作成方法の2つの比較について:
Javaはクラスのマルチ継承をサポートしていないことは知っていますが、複数のインタフェースを実現することができ、Threadクラスを継承すると、他の親クラスを継承することはできません.
Runnable方式を用いることで,複数のスレッドが同じターゲットオブジェクトを共有し,同じリソースを処理することができ,よりオブジェクト向けの考え方を体現することができる.