현재 위치 - 인적 자원 플랫폼망 - 미니프로그램 자료 - 비동기 실행을 구현하는 Java 대기열
비동기 실행을 구현하는 Java 대기열
전체 아이디어를 조정해야 합니다.

1. 많은 스레드가 작업을 큐에 추가합니다.

2. 하나 이상의 스레드가 대기열에 있는 작업을 하나씩 실행합니다.

다음 사항을 고려하십시오.

1. 작업이 없는 경우 큐 실행 스레드가 대기 중입니다.

2. 작업이 추가되면 큐 실행 스레드가 활성화되어 모두 실행됩니다. 작업의 실행을 먼저 잡고 다른 모든 작업을 기다립니다.

작은 예제입니다.

Parcel?org

Import?Java . util . 연결된 목록;

Import? java . util . list;

Public? class? queue? {

public? static? list& lt task& gt? queue? =? New?LinkedList & lt task& gt();

/**

? *? 가정? 매개변수 o? 이 작업에 대한

? *? @param?o

? */

Male? Static? void? Supplement? (Tasks?t){

Sync? (Queues.queue)? {

queues . queue . add(t); ? // 작업 추가

queues . queue . notifyall(); // 큐의 해당 실행 스레드를 활성화하고 모두 실행합니다.

}

}

Static? Class? Tasks{

Public? Voiding? test(){

System.out.println("I was executed");

}

}

}

}Package?org

Import?Java . util . List;

Public? Class? exec? ware? Runable{

@override

Public? Void? run()? {

while(true){

Sync? (Queues.queue)? {

while(Queues.queue.isEmpty()){? //

Try ? {

queues . queue . wait(); ? // 큐가 비어있을 때 스레드를 기다리게 합니다.

}? Catch ? (인터럽트 예외 ?e)? {

e . printstacktrace();

}

System.out.println("Wait...")

}

Queues. Task ?t = ?queues . queue . remove(0); ? // 첫 번째

t . test(); ? // 이 작업 실행

system . out . println(" end ");

}

}

}

Male? Static? void? main(String[]? args)? {

Exec?e?=? New?exec();

무엇을 위해? (int?me? =?0;? me? & lt?2;?i++)? {

New ? thread(e). start(); ? //비어있는 큐에서 실행이 시작되어 대기 중입니다.

}

// 위의 두 스레드를 시작하여 큐에 있는 작업을 선착순으로 실행합니다.

//작업 테스트 추가

큐. Task?t? = new? Queue. task();

queues . add(t); ? // 이 메서드를 실행하고 해당 큐를 모두 활성화하면 두 개의 스레드가 실행을 시작합니다.

}

위는 매우 간단한 예제입니다.