실행 가능 대 스레드
10499 단어 javaprogrammingmultithreading
스레드 클래스 확장:
class MyThread extends Thread{
/*
This is where your implementation of what happens when you start a thread goes.
You need to override the run method from the Thread class.
*/
@Override
public void run()
{
System.out.println("Thread is running");
}
}
class CreatingThreads {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
실행 가능한 인터페이스 구현
class MyRunnable implements Runnable{
@Override
public void run()
{
System.out.println("Thread is running");
}
}
class CreatingThreads{
public static void main(String[] args){
Runnable myRunnable = new MyRunnable();
Thread myThread = new Thread(myRunnable);
myThread.start();
}
}
Runnable
인터페이스를 사용하여 람다 식을 통해 스레드를 생성할 수도 있습니다. Thread 클래스는 Runnable
개체를 사용하고 Runnable
인터페이스에는 인수를 사용하지 않는 단 하나의 메서드 실행만 있습니다. 따라서 구현하기 훨씬 쉬운 다음 패턴을 사용하여 Thread
를 만들 수 있습니다.class CreatingThreads{
public static void main(String[] args){
Thread myThread2 = new Thread(() -> {
//do something here
//what do you want your thread to do
});
myThread2.start();
}
}
Runnable
클래스를 확장하는 것보다 Thread
인터페이스를 구현하는 이점은 필요한 경우 다른 클래스를 확장할 공간이 있다는 것입니다. (Java에서는 하나의 클래스만 확장할 수 있습니다.)다른 장점은
Thread
클래스에 의해 생성된 각 스레드가 새 객체와 연결되는 반면 Runnable
인터페이스에 의해 생성된 각 스레드는 동일한 객체를 공유한다는 것입니다.다음 코드를 살펴보겠습니다.
class MyRunnable implements Runnable{
public int number = 0;
@Override
public void run() {
number++;
System.out.println("Thread is running, "+number);
}
}
class MyThread extends Thread{
public int number = 0;
@Override
public void run() {
number++;
System.out.println("Thread is running, "+number);
}
}
class CreatingThreads{
public static void main(String[] args) throws InterruptedException {
System.out.println("Implementing Runnable Interface: ");
Runnable myRunnable = new MyRunnable();
Thread myThread = new Thread(myRunnable);
Thread myThread2 = new Thread(myRunnable);
myThread.start();
Thread.sleep(2000);
myThread2.start();
Thread.sleep(2000);
System.out.println();
System.out.println("Extending Thread Class: ");
MyThread secondMyThread = new MyThread();
MyThread secondMyThread2 = new MyThread();
secondMyThread.start();
Thread.sleep(2000);
secondMyThread2.start();
}
}
산출:
Implementing Runnable Interface:
Thread is running, 1
Thread is running, 2
Extending Thread Class:
Thread is running, 1
Thread is running, 1
보시다시피
Runnable
인터페이스를 구현하여 생성된 스레드는 동일한 객체에서 작동하는 반면 Thread
클래스를 확장하여 생성된 스레드는 다른 객체에서 작동합니다.내 블로그Oshan Upreti에서도 찾을 수 있습니다.
Reference
이 문제에 관하여(실행 가능 대 스레드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/oshanoshu/runnable-vs-threads-5bef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)