一、题目内容

二、我的答案

  利用了线程池、考虑了超时处理、不知道这样写是否还有其他问题,或者更好更优的解决方案?

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;
}
}
}

  

JAVA多线程笔试题的更多相关文章

  1. 非常全面的java基础笔试题

    下面是java基础笔试题,当时我去笔试,做了1个小时(80道选择题,后面的简答题就没时间做了),结果很吓人,太挫了,最后被面试官忽悠去培训去了,呵呵.我偷偷把面试题弄了下来,用来学习吧,也希望能对你们 ...

  2. Java 面试/笔试题神整理 [Java web and android]

    Java 面试/笔试题神整理 一.Java web 相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并 ...

  3. 15个顶级Java多线程面试题及回答

    Java 线程面试问题 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程 的问题.在投资银行业务中多线程和并发 ...

  4. Java工程师笔试题整理[校招篇]

    Java工程师笔试题整理[校招篇]     隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...

  5. 【OD深入学习】Java多线程面试题

    一.参考文章 1. Java线程面试题 Top 50 2. Java面试——多线程面试题 3. JAVA多线程和并发基础面试问答 4. 15个顶级Java多线程面试题及回答 二.逐个解答 三.一语中的 ...

  6. 40道经典java多线程面试题

    40道经典java多线程面试题 题目来源 看完了java并发编程的艺术,自认为多线程"大成",然后找了一些面试题,也发现了一些不足. 一下问题来源于网上的博客,答案均为本人个人见解 ...

  7. 一线大厂面试官最喜欢问的15道Java多线程面试题

    前言 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得更多职位,那么你应该准备很多关于多线程的问题. 他们会问面试者很多令人混淆的Java线程问题.面试官只是想确信面试者 ...

  8. java多线程面试题选择题大全含答案

    v java多线程面试题选择题大全含答案 java多线程面试题选择题大全含答案 1.下面程序的运行结果()(选择一项)public static void main(String[] args) {T ...

  9. Java基础&笔试题

    这些题目是近期我参加过的笔试题和一些我在网上选的部分题,在这里做笔记,认真去学习,更好的应对后面的招聘.有错误欢迎指出. 一.Java基础部分 1.指针在任何情况下都可进行>,<,> ...

随机推荐

  1. logtash 接收多配置文件

    [root@10-19-148-59 etc]# vim front_esb.conf input { beats { type => beats port => 5077 } } fil ...

  2. [Contiki系列论文之2]WSN的自适应通信架构

    说明:本系列文章翻译自Contiki之父Adam Dunkels经典论文,版权归原作者全部. Contiki是由Adam Dunkels及其团队开发的系统.研读其论文是对深入理解Contiki系统的最 ...

  3. 应该用bind+function取代虚函数吗?

    用bind+function取代虚函数在好几年前就有人提出了,曾引起广泛的讨论,有支持的有反对的,可能赞成的人占大多数.这个话题挺有趣,本来是作为技术沙龙的开放性话题来讨论的,由于时间关系并没有讨论. ...

  4. Python 传值和传址 copy/deepcopy

    传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组则传值:如 ...

  5. debian8.5安装sublime text3

    在官网www.sublimetext.com下载安装包 我这里用的是Ubuntu 64 bit版. 下载后使用su命令切换到root账户. 执行安装命令 dpkg -i sublime-text*.d ...

  6. iOS按钮的基本使用代码优化

    将图片按钮进行连线, 声明方法同时连接六个按钮 -(void)move:(UIButton *)btn{ //    NSLog(@"看见一个美女"); //头尾式动画 //0.开 ...

  7. golang将interface{}转换为struct

    项目中需要用到golang的队列,container/list,需要放入的元素是struct,但是因为golang中list的设计,从list中取出时的类型为interface{},所以需要想办法把i ...

  8. CISCO、H3C、华为三层交换机端口二三层切换命令对比

    很多人都在问H3C是否有像CISCO三层端口切换类似的命令 switchport . 答案是肯定的.有.很多人都不知道. 其实无论是思科还是H3C还是华为他们都有这样的命令.但是在H3C和华为中不经常 ...

  9. Natural Language Processing, 2017, Mar.29, Weekly Report

    Distributed Representations of Words and Phrases and their Compositionality T Mikolov, I Sutskever, ...

  10. log4e下载地址

    Log4e的插件的下载地址:log4e.jayefem.de/content/view/3/1/