マルチスレッドの例


public class Test implements Runnable{
    int i=100;
    
	public static void main(String [] args){
		Test th = new Test();
		new Thread(th,"sf2:").start();
		new Thread(th,"sf1:").start();
		new Thread(th,"sf3:").start();
		new Thread(th,"sf4:").start();
		new Thread(th,"sf5:").start();
		new Thread(th,"sf6:").start();
		new Thread(th,"sf7:").start();
		new Thread(th,"sf8:").start();
		new Thread(th,"sf9:").start();
		new Thread(th,"sf10:").start();
		
	}
	
	/**
	 *  
	 */
	public synchronized void run(){
			for(;i<1000;i++){
				System.out.println(Thread.currentThread().getName()+i);
		}
			System.out.println(Thread.currentThread().getName());
	}
}

結果
sf2:100
sf2:101
sf2:102
sf2:103
.....
sf2:999
sf2:
sf10:
sf9:
sf8:
sf7:
sf6:
sf5:
sf4:
sf3:
sf1:

synchronizedキーワードを使用する場合は、synchronizedメソッドまたはsynchronizedブロックでsleepメソッドまたはyieldメソッドを使用することをできるだけ避けるべきです.synchronizedブロックはオブジェクトロックを占めているので、休憩すると、他のスレッドは目が覚めるのを待って実行するしかありません.効率に深刻な影響を及ぼすだけでなく、論理にも合わない.
同様に、同期ブロック内でyeildメソッドを呼び出すと、CPUリソースがロックされているため、他の反発スレッドは同期ブロックにアクセスできません.もちろん、同期ブロックに関係のないスレッドは、より多くの実行時間を得ることができる.