java多线程笔试题_JAVA多线程笔试题

import java.util.;

import java.util.concurrent.;

public class Main {

public static void main(String[] args) {

List<String> allPaymentList=Arrays.asList("余额","红包","余额宝","银行卡");

long start=System.nanoTime();

List<String> list=filterDisablePayment(allPaymentList);

double seconds=(System.nanoTime()-start)/1000000000.0;

System.out.println("总共耗时:"+seconds+"s");

for(String paymentType:list){

System.out.println(paymentType);

}

}

public static List<String> filterDisablePayment(List<String> allPaymentList){

List<String> results=new ArrayList<>();

ExecutorService executorService= Executors.newFixedThreadPool(allPaymentList.size());

List<Future<String>> futures=new ArrayList<>();

for(String paymentType:allPaymentList) {

futures.add(executorService.submit(new PaymentMethodCallable(paymentType)));

}

executorService.shutdown();

for(Future<String> future:futures){

try {

//超时处理机制

String result= future.get(4,TimeUnit.SECONDS);

if(result!=null){

results.add(result);

}

} catch (Exception e) {

e.printStackTrace();

}

}

return results;

}

public static Boolean PaymentIsEnabled(String paymentType) {

try {

//模拟远程服务调用所用时间

Thread.sleep(3000);

Random random=new Random();

boolean result=random.nextBoolean();

System.out.println("获取到结果:"+paymentType+":"+result);

return result;

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

static class PaymentMethodCallable implements Callable<String> {

private String paymentType;

public String getPaymentType() {

return paymentType;

}

public void setPaymentType(String paymentType) {

this.paymentType = paymentType;

}

public PaymentMethodCallable(String paymentType) {

this.paymentType = paymentType;

}

@Override

public String call() {

if(PaymentIsEnabled(paymentType)) return paymentType;

return null;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值