java 다중 스레드 실현 방법 총결
자바에서 세 가지 방법으로 다중 스레드를 실현할 수 있다.첫 번째 방법: Thread 클래스를 계승하고run 함수를 다시 씁니다.두 번째 방법: Runnable 인터페이스를 실현하고run 함수를 다시 쓴다.세 번째 방법: Callable 인터페이스를 실현하고call 함수를 다시 쓴다.이 글은 실례를 통해 이 세 가지 방법이 어떻게 다선정을 실현하는지 설명할 것이다.필요한 건 참고하셔도 돼요.
(1) Thread 클래스를 상속하고 run 함수를 다시 씁니다.
class xx extends Thread{
public void run(){
Thread.sleep(1000) // 1000 ,sleep Block ,
}}
라인 켜기:대상start ()//시작 루틴,run 함수 실행
(2) Runnable 인터페이스 구현, 코드는 다음과 같다.
class MyThread implements Runnable {
private String name;
public MyThread(String name) {
super();
this.name = name;
}
@Override
public void run() {
for(int i = 0 ; i < 200; i++) {
System.out.println("Thread"+name+"--->"+i);
}
}
}
public class ThreadDemo {
public static void main(String[] args) {
MyThread a = new MyThread("a");
MyThread b = new MyThread("b");
MyThread c = new MyThread("c");
new Thread(a).start();
new Thread(b).start();
new Thread(c).start();
}
}
(3) Callable 인터페이스 구현, call 함수 다시 쓰기Callable은 Runnable와 유사한 인터페이스입니다. Callable 인터페이스를 실현하는 클래스와 Runnable를 실현하는 클래스는 모두 다른 라인에서 수행할 수 있는 작업입니다.
Callable과 Runnable의 차이점은 다음과 같습니다.
class TaskWithResult implements Callable<String> {
private int id;
public TaskWithResult(int id) {
this.id = id;
}
@Override
public String call() throws Exception {
return "result of TaskWithResult " + id;
}
}
public class CallableTest {
public static void main(String[] args) throws InterruptedException,
ExecutionException {
ExecutorService exec = Executors.newCachedThreadPool();
ArrayList<Future<String>> results = new ArrayList<Future<String>>(); //Future Executor
for (int i = 0; i < 10; i++) {
results.add(exec.submit(new TaskWithResult(i)));
}
for (Future<String> fs : results) {
if (fs.isDone()) {
System.out.println(fs.get());
} else {
System.out.println("Future result is not yet complete");
}
}
exec.shutdown();
}
}
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.