java鎺ュ彛寮傛涓嶇瓑寰呴棶棰樻€庝箞瑙e喅
鍦↗ava涓紝鍙互浣跨敤澶氱嚎绋嬪拰鍥炶皟鍑芥暟鏉ヨВ鍐虫帴鍙e紓姝ヤ笉绛夊緟鐨勯棶棰樸€?/p>
涓€绉嶅父瑙佺殑瑙e喅鏂规硶鏄娇鐢ㄧ嚎绋嬫睜鍜孎uture瀵硅薄銆傞鍏堬紝灏嗘帴鍙g殑璋冪敤鏀惧湪涓€涓狢allable瀵硅薄涓紝骞跺皢璇ュ璞℃彁浜ょ粰绾跨▼姹犳墽琛屻€傜劧鍚庯紝閫氳繃璋冪敤Future瀵硅薄鐨刧et()鏂规硶鏉ョ瓑寰呮帴鍙h皟鐢ㄧ殑缁撴灉銆傝繖鏍凤紝绾跨▼浼氱瓑寰呮帴鍙h皟鐢ㄥ畬鎴愬悗鍐嶇户缁墽琛屼笅闈㈢殑浠g爜銆?/p>
鍙︿竴绉嶆柟娉曟槸浣跨敤鍥炶皟鍑芥暟銆傚畾涔変竴涓帴鍙o紝鍏朵腑鍖呭惈涓€涓洖璋冩柟娉曘€傚湪鎺ュ彛鐨勫疄鐜扮被涓紝瀹炵幇璇ユ柟娉曞苟鍦ㄥ紓姝ユ搷浣滃畬鎴愬悗璋冪敤鍥炶皟鏂规硶銆傚湪璋冪敤鎺ュ彛鐨勫湴鏂癸紝瀹炰緥鍖栨帴鍙g殑瀹炵幇绫伙紝骞跺皢鍥炶皟鏂规硶浼犻€掔粰鎺ュ彛锛屼互渚垮湪寮傛鎿嶄綔瀹屾垚鍚庢墽琛屽洖璋冩柟娉曘€?/p>
涓嬮潰鏄竴涓ず渚嬩唬鐮侊紝婕旂ず浜嗕娇鐢ㄧ嚎绋嬫睜鍜孎uture瀵硅薄鏉ヨВ鍐虫帴鍙e紓姝ヤ笉绛夊緟鐨勯棶棰橈細
import java.util.concurrent.*;
public class AsyncExample {
public static void main(String[] args) throws Exception {
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<String> future = executorService.submit(new MyCallable());
// 绛夊緟鎺ュ彛璋冪敤瀹屾垚
String result = future.get();
System.out.println(result);
executorService.shutdown();
}
static class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
// 妯℃嫙鎺ュ彛璋冪敤
Thread.sleep(2000);
return "鎺ュ彛璋冪敤缁撴灉";
}
}
}
鍦ㄤ笂闈㈢殑浠g爜涓紝閫氳繃璋冪敤Future瀵硅薄鐨刧et()鏂规硶鏉ョ瓑寰呮帴鍙h皟鐢ㄧ殑缁撴灉銆傜敱浜庢帴鍙h皟鐢ㄦ槸鍦ㄥ彟涓€涓嚎绋嬩腑鎵ц鐨勶紝鎵€浠ヤ富绾跨▼浼氱瓑寰呮帴鍙h皟鐢ㄥ畬鎴愬悗鍐嶇户缁墽琛屻€?/p>
闇€瑕佹敞鎰忕殑鏄紝绾跨▼姹犻渶瑕佸湪涓嶄娇鐢ㄦ椂鎵嬪姩鍏抽棴锛屼互閲婃斁璧勬簮銆?/p>
鍙﹀锛屼娇鐢ㄥ洖璋冨嚱鏁扮殑鏂规硶涔熸槸涓€绉嶅父瑙佺殑瑙e喅鏂规锛屽彲浠ユ牴鎹叿浣撻渶姹傞€夋嫨鍚堥€傜殑鏂规硶鏉ヨВ鍐虫帴鍙e紓姝ヤ笉绛夊緟鐨勯棶棰樸€?/p>