JAvaはいくつかの方法で1つのスレッドを実現することができますか?同期方法を修飾するキーワードは何ですか?

1403 ワード

  • javaマルチスレッド実装方法は主に3種類ある:Threadクラスの継承、Runnableインタフェースの実装、ExecutorService、callable、futureを使用してリターン結果のあるマルチスレッドの実装.このうち,前2方式のスレッドは実行後も戻り値がなく,最後の1つだけ戻り値がある.
  • がThreadクラス起動スレッドを継承する唯一の方法は、Threadクラスのstart()インスタンスメソッドである.start()メソッドはnativeメソッドであり、新しいスレッドを起動しrunメソッドを実行します.この方法は,自分のクラスを直接extend Threadし,run()メソッドを複写することで,新しいスレッドを起動し,自分で定義したrun()メソッドを実行することができる.
    public class MyThread extends Thread{
    	public void run(){
    		System.out.println("myThread start...");
    	}
    }
  • はRunnableインタフェースを実装することによってマルチスレッドを実装する.自分のクラスが既にextendsになっている場合は,直接extends Threadクラスを実現することはできず,Runnableインタフェースを実践することでマルチスレッドを実現するしかない.以下の
    public class MyThread extends OtherClss implements Runnable{
    	public void run(){
    		System.out.println("myThread start...");
    	}
    }
    の起動時にThreadクラスをインスタンス化し、その後、独自のMyThreadインスタンスを
    Thread thread = new Thread(new MyThread);
    thread.start();        Runnable target   Thread ,Thread run()     target.run(),  jdk  
  • に転送する.
    	public void run (){
    		if(target != null){
    			target.run();
    		}
    	}