이 기사는 Java에서 비동기 호출을 구현하는 방법에 대한 코드 예제를 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 친구가 될 수 있기를 바랍니다.
먼저 제가 겪은 문제는 인터페이스가 호출될 때 캐시를 업데이트해야 한다는 것인데, 캐시 업데이트가 빠른 속도로 진행되기 때문에 필요한 결과를 반환하기 위해 비동기 호출을 할 계획입니다. 캐시가 업데이트될 때 필요한 것은 아닙니다. 주의
더 이상 말도 안 되는 소리는 하지 마세요. 코드에 대해 이야기합시다
public class MyExecutor { private ExecutorService executor = Executors.newCachedThreadPool() ; public void fun() throws Exception { executor.submit(new Runnable(){ @override public void run() { try { //要执行的业务代码,我们这里没有写方法,可以让线程休息几秒进行测试 Thread.sleep(10000); System.out.print("睡够啦~"); }catch(Exception e) { throw new RuntimeException("报错啦!!"); } } }); } }
public class Demo{ public static void main(String[] args) { MyExecutor myExecutor = new MyExecutor(); try { myExecutor.fun(); System.our.print("你先睡着,我先回家啦~"); }catch(Exception e) { throw new RuntimeException("业务程序报错啦!!"); } } }
좋아, 코드는 여기 있습니다. (ps: 입력할 때 실수가 있으면 죄송합니다. by hand)
메인 메소드 실행
먼저 인쇄됩니다 (당신이 먼저 잠들고, 내가 먼저 집에 갑니다~)
그 다음 (충분히 자요~)
즉, 메인 프로그램이 결과를 반환했습니다 비동기적으로 실행해야 하는 메서드가 완료되기 전에 계속 기다릴 필요가 없습니다. 이렇게 하면 프로그램이 먼저 결과를 반환한 다음 대기가 필요한 번거로운 작업을 계속할 수 있습니다. 비동기 메서드가 실행되었는지 확인합니다.
Executors 클래스에 대해 이야기해 보겠습니다.
이 클래스는 스레드 풀을 생성하는 데 사용됩니다.
여러 가지 메서드가 있습니다
1. newFixedThreadPool()은 스레드 풀의 크기가 최대에 도달하면 고정된 크기의 스레드 풀을 생성합니다. 값은 변경되지 않습니다. 실행 예외로 인해 스레드가 종료되면 스레드 풀은 새 스레드를 추가합니다
2. 스레드 풀의 크기가 스레드를 초과하면 newCachedThreadPool()이 생성됩니다. 작업을 처리하는 데 필요한 경우 일부 유휴 스레드(60초 동안 작업을 실행하지 않음)가 재활용됩니다. 작업 수가 증가하면 이 스레드 풀은 작업을 처리하기 위해 지능적으로 새 스레드를 추가할 수 있습니다. 이 스레드 풀은 스레드 풀의 크기를 제한하지 않습니다. 스레드 풀의 크기는 시스템(JVM)이 생성할 수 있는 최대 스레드 크기에 따라 완전히 달라집니다. 3. newSingleThreadExecutor()는 단일 스레드 스레드 풀을 생성합니다. 이 스레드 풀에는 작동하는 스레드만 있습니다. 이는 모든 작업을 순차적으로 실행하는 단일 스레드와 동일합니다. 유일한 스레드가 비정상적으로 종료되면 새 스레드가 이를 대체합니다. 이 스레드 풀은 모든 작업이 제출된 순서대로 실행되도록 보장합니다
4. newScheduledThreadPool()은 무제한 크기의 스레드 풀을 생성합니다. 이 스레드 풀은 작업의 타이밍 및 주기적인 실행을 지원합니다
5. ()는 단일 스레드 스레드 풀을 생성합니다. 이 스레드 풀은 작업의 타이밍과 주기적인 실행을 지원합니다
위 내용은 비동기 호출을 구현하는 Java 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!