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;
}
}
}
JAVA多线程笔试题的更多相关文章
- 非常全面的java基础笔试题
下面是java基础笔试题,当时我去笔试,做了1个小时(80道选择题,后面的简答题就没时间做了),结果很吓人,太挫了,最后被面试官忽悠去培训去了,呵呵.我偷偷把面试题弄了下来,用来学习吧,也希望能对你们 ...
- Java 面试/笔试题神整理 [Java web and android]
Java 面试/笔试题神整理 一.Java web 相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并 ...
- 15个顶级Java多线程面试题及回答
Java 线程面试问题 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程 的问题.在投资银行业务中多线程和并发 ...
- Java工程师笔试题整理[校招篇]
Java工程师笔试题整理[校招篇] 隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...
- 【OD深入学习】Java多线程面试题
一.参考文章 1. Java线程面试题 Top 50 2. Java面试——多线程面试题 3. JAVA多线程和并发基础面试问答 4. 15个顶级Java多线程面试题及回答 二.逐个解答 三.一语中的 ...
- 40道经典java多线程面试题
40道经典java多线程面试题 题目来源 看完了java并发编程的艺术,自认为多线程"大成",然后找了一些面试题,也发现了一些不足. 一下问题来源于网上的博客,答案均为本人个人见解 ...
- 一线大厂面试官最喜欢问的15道Java多线程面试题
前言 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得更多职位,那么你应该准备很多关于多线程的问题. 他们会问面试者很多令人混淆的Java线程问题.面试官只是想确信面试者 ...
- java多线程面试题选择题大全含答案
v java多线程面试题选择题大全含答案 java多线程面试题选择题大全含答案 1.下面程序的运行结果()(选择一项)public static void main(String[] args) {T ...
- Java基础&笔试题
这些题目是近期我参加过的笔试题和一些我在网上选的部分题,在这里做笔记,认真去学习,更好的应对后面的招聘.有错误欢迎指出. 一.Java基础部分 1.指针在任何情况下都可进行>,<,> ...
随机推荐
- [LeetCode] Shortest Word Distance I & II & III
Shortest Word Distance Given a list of words and two words word1 and word2, return the shortest dist ...
- PostgreSQL判断是否为空coalesce
coalesce(expr1,expr2,expr3...) 直到找到一个非null值返回,右边的表达式则不参与运算:若所有为null,返回null. eg:判断json是否包含某属性,若无,则取默认 ...
- 深入理解Linux内核-块设备驱动程序
扇区: 1.硬盘控制器将磁盘看成一大组扇区2.扇区就是一组相邻字节3.扇区按照惯例大小设置位512字节4.存放在块设备中的数据是通过它们在磁盘上的位置来标识,即首个扇区的下标和扇区的数目.5.扇区是硬 ...
- do-release-upgrade升级笔记
事后的总结: 后来可能因为阿里云镜像并不是完全底层无关镜像,do-release-upgrade后的18.04版本在经过一次异常的内核版本升级以后,restart失败,因为是虚机还很难处理,不得不直接 ...
- 【硅谷问道】 WWDC 17: 开发者的最初观感
[硅谷问道] WWDC 17: 开发者的最初观感 前言 每年的 WWDC 都是 iOS 开发者集体高潮的时刻.第一天的 WWDC 带来了全新的 iOS 11.MacOS.tvOS 和 watchOS, ...
- iOS-图片浏览器(字典和plist文件的使用)
// // ViewController.m // 19-图片浏览器 // // Created by hongqiangli on 2017/7/31. // Copyright © 201 ...
- 安装pydiction
pydiction用来实现代码补全和语法提示功能.pydiction不能通过apt安装,需要自行下载安装. 在GitHub下载源码,可以使用Git迁出到本地,或者下载zip包自行解压,地址为:http ...
- Lintcode: Longest Common Substring 解题报告
Longest Common Substring 原题链接: http://lintcode.com/zh-cn/problem/longest-common-substring/# Given tw ...
- 普通用户无法su到root用户
问题描述: 普通用户切换回root用户时,密码输入正确仍然报密码错误. 问题解决: 1.1 检查/etc目录下passwd的权限 [root@dev /]# ll/etc/passwd-rw-r--r ...
- Orcale11g单机安装与卸载
前言:本篇主要介绍Oracle11g企业版安装的准备工作,建议使用图形化界面安装,静默安装出现问题较多,初学者不好排查,本篇只给出关键步骤,最后介绍完全删除Orcale方法: Oracle Datab ...