マルチスレッド

6728 ワード

1.プロセスとは?

  • を実行するアプリケーション
  • ユーザがアプリケーションを実行するとき、オペレーティングシステムから実行に必要なメモリを取得し、アプリケーションのコード
  • を実行する.
  • アプリケーションは、複数のプロセスを作成することもできます.
  • 2.テーマは何ですか。

  • コード実行ストリーム
  • プロセスに2つのスレッドがある場合、2つのコード実行ストリームが生成されます.
  • 3.マルチプロセスとマルチスレッド

  • マルチプロセスはアプリケーションユニットであり、マルチスレッドはアプリケーション内部のマルチタスクユニットである.
  • マルチプロセス
  • のオペレーティングシステムでは、自己割り当てメモリが使用するため、互いに独立した
  • が使用される.
    したがって、1つのプロセスにエラーが発生した場合、他のプロセスには影響しません.
  • マルチスレッド
  • のプロセス内で作成されるため、スレッドに異常が発生すると、プロセス自体が終了し、他のスレッドに影響を与える可能性があります.
  • したがって,マルチスレッド環境では,異常の処理に全力を尽くす必要がある.

    4.工作機械ねじの作成と実行

  • javaアプリケーションには、プライマリ・スレッドが存在する必要があります.したがって、プライマリ・タスクに加えて、追加のパラレル・タスクの数を生成するだけです.
  • java.直接オブジェクト化してlang.Threadクラスを作成することもできますが、Threadを継承してサブクラスを作成することもできます.
  • //java.lang.Thread클래스를 직접 객체화해서 생성
    public class BeepPriintExample {
    	public static void main(String[] args) {
    		Thread thread = new Thread(() -> {
    			Toolkit toolkit = Toolkit.getDefaultToolkit();
    			for(int i=0; i<10; i++) {
    				toolkit.beep();
    				try {Thread.sleep(500); } catch (Exception e) {	}
    			}
    		});
    		thread.start();
    		
    		for(int i=0; i<10; i++) {
    			System.out.println("띵");
    			try {Thread.sleep(500); } catch (Exception e) {	}
    		}
    		
    	}
    }
    // Thread를 상속해서 하위 클래스를 만들어 생성
    public class BeepPrintExample2 {
    	public static void main(String[] args) {
    		//Thread 하위클래스로부터 생성
    		//작업스레드가 실행할 작업을 Runnable로 만들지 않고, Thread의 하위 클래스로 작업 스레드를 정의하면서 작업 내용을 포함시킬 수도 있다.
    		Thread thread = new Thread() {
    			@Override
    			public void run() {
    				Toolkit toolkit = Toolkit.getDefaultToolkit();
    				for(int i=0; i<10; i++) {
    					toolkit.beep();
    					try { Thread.sleep(500); } catch (InterruptedException e) {}
    				}
    			}
    		};
    		thread.start();
    		
    		for(int i=0; i<10; i++) {
    			System.out.println("띵");
    			try { Thread.sleep(500); } catch (InterruptedException e) {}
    		}
    	}
    }

    5.スレッド優先度

  • マルチスレッドが同時に実行または並列に実行されます.
  • 同時性
  • マルチスレッドが1つのカーネルで交互に動作する特性
  • パラレル
  • マルチコア上で複数のスレッドを同時に実行して複数のタスクを実行する性質:
  • スレッドスケジューリング
  • スレッドの数がカーネルの数より大きい場合、実行スレッドをどの順序で同期するかを決定します.