JAvaマルチスレッドプロファイリング

2387 ワード

Java開発者にとって、マルチスレッドは応用に熟練しなければならない知識点であり、特にJava言語に基づく製品を開発しなければならない.Javaマルチスレッドの知識点について簡単に説明します.
 スレッドを説明する前に、プロセスとスレッドという混同しやすい2つの概念についてお話しします.
プロセス:
プロセスとは、メモリで実行されるアプリケーション(たとえば、実行されるexeがプロセス)を指します.
スレッド:
スレッドとは、複数のスレッドを実行できるプロセスの実行プロセスです.
 
スレッドの実行を分析します.
1、スレッドの作成と起動
スレッドの作成:2つの方法があります
1)java.lang.Threadクラスを継承し、スレッドを直接newでインスタンス化します.
2)java.lang.Runnableインタフェースを実装し,スレッドをThreadの構築手法でインスタンス化する.
スレッドの開始
Threadのstart()メソッドを呼び出します. 
例1-1:Threadクラスを継承するマルチスレッドの例 
	public class TestThread extends Thread{ 
	    public TestThread(String name) { 
	        super(name); 
	    } 
	
	    public void run() { 
	        for(int i = 0;i<5;i++){ 
	            for(long k= 0; k <100000000;k++); 
	            System.out.println(this.getName()+" :"+i); 
	        } 
	    } 
	
	    public static void main(String[] args) { 
	        Thread t1 = new TestThread("   "); 
	        Thread t2 = new TestThread("   "); 
	        t1.start(); 
	        t2.start(); 
	    } 
	}

例1-2:Runnableインタフェースを実装するマルチスレッドの例
	public class MyThread implements Runnable { 
	    private String name; 
	
	    public MyThread (String name) { 
	        this.name = name; 
	    } 
	
	    public void run() { 
	        for (int i = 0; i < 5; i++) { 
	            for (long k = 0; k < 100000000; k++) ; 
	            System.out.println(name + ": " + i); 
	        } 
	    } 
	}
	
	public class TestRunnable { 
	    public static void main(String[] args) { 
	        MyThread mt1 = new MyThread ("   "); 
	        MyThread mt2 = new MyThread ("   "); 
	
	        Thread t1 = new Thread(mt1); 
	        Thread t2 = new Thread(mt2); 
	
	        t1.start(); 
	        t2.start(); 
	    } 
	}

2、スレッドの状態変換
3、スレッドのスケジューリング
スレッドのスケジューリングには、スリープ(sleep)、優先度(setPriority)、譲歩(yield)、合併(join)があります.
スレッドの異なるスケジューリングは、異なるステータスに変換します(2のステータス変換テーブルを参照できます).
4、スレッドの同期とロック
オブジェクトにはロックが1つしかありません.したがって、1つのスレッドがロックを取得すると、最初のスレッドがロックを解放(または戻る)まで他のスレッドはロックを取得できません.これは、ロックが解放されるまで、他のスレッドがオブジェクト上のsynchronizedメソッドまたはコードブロックに入ることができないことを意味します.
マルチスレッド記事の推奨事項:http://lavasoft.blog.51cto.com/62575/222742