Thread 클래스 및 Runnable 인터페이스
2099 단어 Runnable
Thread 클래스의 정의입니다.
public class Thread extends Object implements Runnable
Thread 클래스의 정의에서 알 수 있듯이 Thread 클래스도 Runnable 인터페이스의 하위 클래스이지만 Thread 클래스에서 Runnable 인터페이스의run () 방법을 완전히 실현하지 못했다.
차이점: 만약에 하나의 클래스가 Thread 클래스를 계승한다면 여러 라인에서 자원을 공유하는 데 적합하지 않고 Runnable 인터페이스를 실현하면 자원의 공유를 편리하게 실현할 수 있다.
예: 상속 Thread에서는 리소스를 공유할 수 없습니다.
package ThreadDemo01;
class MyThread2 extends Thread {
private int ticket = 5;
public void run() { // Thread run()
for (int i = 0; i < 100; i++) {
if (ticket > 0) {
System.out.println(" :tick=" + ticket--);
}
}
}
}
public class ThreadDemo04 {
public static void main(String[] args) {
MyThread2 mt1 = new MyThread2();// 1
MyThread2 mt2 = new MyThread2();// 2
MyThread2 mt3 = new MyThread2();// 3
mt1.start();// 1
mt2.start();// 2
mt3.start();// 3
}
}
결과:
티켓팅:tick=5 티켓팅:tick=4 티켓팅:tick=3 티켓팅:tick=2 티켓팅:tick=1 티켓팅:tick=5 티켓팅:tick=4 티켓팅:tick=3 티켓팅:tick=2 티켓팅:tick=1 티켓팅:tick=5 티켓팅:tick=4 티켓팅:tick=3 티켓팅:tick=2 티켓팅:tick=1
예: 리소스 공유를 위한 Runnable
package test1;
class MyThread implements Runnable {
private int ticket = 5;
public void run() {
for (int i = 0; i < 100; i++) {
if (ticket > 0) {
System.out.println(" :ticket=" + ticket--);
}
}
}
}
public class ThreadDemo02 {
public static void main(String[] args) {
MyThread mt1 = new MyThread(); //
new Thread(mt1).start();
new Thread(mt1).start();
new Thread(mt1).start();
new Thread(mt1).start();
new Thread(mt1).start();
new Thread(mt1).start();
new Thread(mt1).start(); // 7
}
}
결과:
표 사기:ticket=5 표 사기:ticket=4 표 사기:ticket=3 표 사기:ticket=2 표 사기:ticket=1
7개의 라인을 가동했지만 표 다섯 장을 팔았다는 뜻이다
Runnable을 사용하면 다음과 같은 이점이 있습니다.
1. 같은 프로그램 코드의 여러 라인이 같은 자원을 처리하기에 적합한 경우
2. 자바와의 단일 계승 특성으로 인한 한계를 피할 수 있다
3. 프로그램의 건장성을 강화하고 코드는 다중 루트에 의해 코드와 데이터가 독립될 수 있다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 멀티스레드 Thread 및 Runnable 구현자바에서는 단일 계승만 허용하지만 여러 개의 인터페이스를 허용하기 때문에 두 번째 방법은 더욱 유연하다. 상속 Thread 클래스 정의 스레드 상속 Thread 클래스 정의 스레드 프로그램 시작...0 Thread ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.