java 스레드 - 스레드 풀
6268 단어 java 학습
public class ExecutorDemo{
public static void main(String[] args){
// ,
ExecutorService pool = Executors.newFixedThreadPool(2);
// Rnnable Callable
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());
//
pool.shutdown();
}
}
class MyRunnable implements Runnable{
public void run(){
for(int x=0;x<100;x++){
System.out.println(Thread.currentThread().getName()+":"+ x);
}
}
}
3. Callable: 일반적인 인터페이스를 가지고 있습니다. 일반적인 인터페이스는 Call 방법의 반환값 형식입니다.
public class MyCallable implements Callable{
public Object call() throw Exception{
for(int x=0;x<100;x++){
System.out.println(Thread.currentThread().getName()+":"+ x);
}
}
return null;
}
class CallableDemo{
public static void main(String[] args){
// ,
ExecutorService pool = Executors.newFixedThreadPool(2);
// Rnnable Callable
pool.submit(new MyCallable());
pool.submit(new MyCallable());
//
pool.shutdown();
}
}
4. Callable 구와 소예
public class MyCallable implements Callable<Integer>{
private int num;
public MyCallable(int num){
this.num = num;
}
public Integer call() throw Exception{
int sum = 0;
for(int x=0;x<= num;x++){
sum+=x;
}
return sum;
}
}
class CallableDemo{
public static void main(String[] args){
// ,
ExecutorService pool = Executors.newFixedThreadPool(2);
// Rnnable Callable
Future f1 = pool.submit(new MyCallable(100));
Future f2 = pool.submit(new MyCallable(200));
Integer i1 = f1.get();
Integer i2 = f2.get();
System.out.println(i1);
System.out.println(i2);
//
pool.shutdown();
}
}
5. 다선정으로 흔히 볼 수 있는 면접문제(1).다선정에는 몇 가지 실현 방안이 있는데, 각각 몇 가지입니까?Thread 클래스를 계승하여 Runnable 인터페이스 확장을 실현합니다:Callable 인터페이스를 실현하고 스레드 탱크와 결합하여 사용합니다.(2).동기화에는 몇 가지 방식이 있는데, 각각 무엇입니까?두 가지.동기화 코드 블록 동기화 방법(3).한 라인을 시작하려면run () 입니까? 아니면 start () 입니까?그것들의 차이는?start(); run (): 실행된 코드를 봉인하여 일반적인 방법으로만 호출하는 Start (): 실행된 코드를 직접 호출하고 JVM에서 자동으로 run () 방법을 호출합니다 (4).sleep()와wait() 방법의 차이점sleep(): 시간을 지정해야 합니다. 자물쇠를 놓지 않아야 합니다(): 시간을 지정하지 않아도 되고, 시간을 지정할 수도 있고, 자물쇠를 놓을 수도 있습니다(5).왜 wait (), notify (), notify All () 등의 방법이 Object 클래스에 정의됩니까?이러한 방법의 호출은 자물쇠 대상에 의존하고 동기화 코드 블록의 자물쇠 대상은 임의의 자물쇠이기 때문이다.Object 코드는 임의의 대상을 안에 정의할 수 있기 때문에 이 안에 정의한다.
(6).스레드의 라이프 사이클 다이어그램 새로 만들기 – 준비 – 실행 - 실행 - 사망 새로 만들기 - 준비 - 실행 - 차단 - 준비 - 실행 - 사망
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 기본 파일 삭제전재:https://blog.csdn.net/zy332719794/article/details/80164205 반복 삭제...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.