logo

Java의 멀티스레딩

멀티스레딩은 CPU 활용도를 최대화하기 위해 프로그램의 두 부분 이상을 동시에 실행할 수 있는 Java 기능입니다. 이러한 프로그램의 각 부분을 스레드라고 합니다. 따라서 스레드는 프로세스 내의 경량 프로세스입니다.

스레드는 두 가지 메커니즘을 사용하여 생성할 수 있습니다.

  1. Thread 클래스 확장
  2. 실행 가능한 인터페이스 구현

Thread 클래스를 확장하여 스레드 생성
우리는 java.lang.스레드 수업. 이 클래스는 Thread 클래스에서 사용할 수 있는 run() 메서드를 재정의합니다. 스레드는 run() 메서드 내에서 수명을 시작합니다. 새 클래스의 객체를 생성하고 start() 메서드를 호출하여 스레드 실행을 시작합니다. Start()는 Thread 객체의 run() 메서드를 호출합니다.



자바




// Java code for thread creation by extending> // the Thread class> class> MultithreadingDemo>extends> Thread {> >public> void> run()> >{> >try> {> >// Displaying the thread that is running> >System.out.println(> >'Thread '> + Thread.currentThread().getId()> >+>' is running'>);> >}> >catch> (Exception e) {> >// Throwing an exception> >System.out.println(>'Exception is caught'>);> >}> >}> }> // Main Class> public> class> Multithread {> >public> static> void> main(String[] args)> >{> >int> n =>8>;>// Number of threads> >for> (>int> i =>0>; i MultithreadingDemo object = new MultithreadingDemo(); object.start(); } } }>

CSS를 중앙으로 보내는 버튼
>

>

산출

Thread 15 is running Thread 14 is running Thread 16 is running Thread 12 is running Thread 11 is running Thread 13 is running Thread 18 is running Thread 17 is running>

Runnable Interface를 구현하여 Thread 생성
java.lang.Runnable 인터페이스를 구현하고 run() 메소드를 재정의하는 새 클래스를 생성합니다. 그런 다음 Thread 객체를 인스턴스화하고 이 객체에 대해 start() 메서드를 호출합니다.

자바




// Java code for thread creation by implementing> // the Runnable Interface> class> MultithreadingDemo>implements> Runnable {> >public> void> run()> >{> >try> {> >// Displaying the thread that is running> >System.out.println(> >'Thread '> + Thread.currentThread().getId()> >+>' is running'>);> >}> >catch> (Exception e) {> >// Throwing an exception> >System.out.println(>'Exception is caught'>);> >}> >}> }> // Main Class> class> Multithread {> >public> static> void> main(String[] args)> >{> >int> n =>8>;>// Number of threads> >for> (>int> i =>0>; i Thread object = new Thread(new MultithreadingDemo()); object.start(); } } }>

>

>

산출

Thread 13 is running Thread 11 is running Thread 12 is running Thread 15 is running Thread 14 is running Thread 18 is running Thread 17 is running Thread 16 is running>

스레드 클래스와 실행 가능 인터페이스

  1. Thread 클래스를 확장하면 Java가 다중 상속을 지원하지 않기 때문에 우리 클래스는 다른 클래스를 확장할 수 없습니다. 그러나 Runnable 인터페이스를 구현하면 클래스는 여전히 다른 기본 클래스를 확장할 수 있습니다.
  2. Thread 클래스는 Runnable 인터페이스에서 사용할 수 없는 Yield(), Interrupt() 등과 같은 내장 메서드를 제공하므로 Thread 클래스를 확장하여 스레드의 기본 기능을 달성할 수 있습니다.
  3. runnable을 사용하면 여러 스레드 간에 공유할 수 있는 개체가 제공됩니다.