精华内容
下载资源
问答
  • 秒杀多线程第一篇 多线程笔试面试题汇总

    万次阅读 多人点赞 2012-04-05 09:35:49
    系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”。有了“招式”和“内功心法”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题。 ----------...

        系列前言

        本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性。系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”。有了“招式”和“内功心”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题。

                  -------------------------------------华丽的分割线---------------------------------------

    第一篇    多线程笔试面试题汇总

     

        多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究院实习生招聘时就被问到了几个概念性题目)。然后是一些选择题,这些一般在笔试时出现,虽然不是太难,但如果在选择题上花费大多时间无疑会对后面的编程题造成影响,因此必须迅速的解决掉。最后是综合题即难一些的问答题或是编程题。这种题目当然是最难解决了,要么会引来面试官的追问,要么就很容易考虑不周全,因此解决这类题目时一定要考虑全面和细致。

        下面就来看看这三类题目吧。

     

    一.概念性问答题

    第一题:线程的基本概念、线程的基本状态及状态之间的关系?

     

    第二题:线程与进程的区别?

           这个题目问到的概率相当大,计算机专业考研中也常常考到。要想全部答出比较难。

     

    第三题:多线程有几种实现方法,都是什么?

     

    第四题:多线程同步和互斥有几种实现方法,都是什么?

           我在参加2011年迅雷校园招聘时的一面和二面都被问到这个题目,回答的好将会给面试成绩加不少分。

     

    第五题:多线程同步和互斥有何异同,在什么情况下分别使用他们?举例说明。

     

    二.选择题

    第一题(百度笔试题):

    以下多线程对int型变量x的操作,哪几个不需要进行同步:
    A. x=y;      B. x++;    C. ++x;    D. x=1;

     

    第二题(阿里巴巴笔试题)

    多线程中栈与堆是公有的还是私有的

    A:栈公有, 堆私有

    B:栈公有,堆公有

    C:栈私有, 堆公有

    D:栈私有,堆私有

     

    三.综合题

    第一题(台湾某杀毒软件公司面试题):

    Windows编程中互斥量与临界区比较类似,请分析一下二者的主要区别。

     

    第二题:

    一个全局变量tally,两个线程并发执行(代码段都是ThreadProc),问两个线程都结束后,tally取值范围。

    inttally = 0;//glable

    voidThreadProc()

    {

           for(inti = 1; i <= 50; i++)

                  tally += 1;

    }

     

    第三题(某培训机构的练习题):

    子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。

     

    第四题(迅雷笔试题):

    编写一个程序,开启3个线程,这3个线程的ID分别为ABC,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC.依次递推。

     

    第五题(Google面试题)

    有四个线程1、234。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式:

    A1 2 3 4 1 2....

    B2 3 4 1 2 3....

    C3 4 1 2 3 4....

    D4 1 2 3 4 1....

    请设计程序。

     

    下面的第六题与第七题也是在考研中或是程序员和软件设计师认证考试中的热门试题。

    第六题

    生产者消费者问题

    这是一个非常经典的多线程题目,题目大意如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,所有生产者和消费者都是异步方式运行的,但它们必须保持同步,即不允许消费者到一个空的缓冲区中取产品,也不允许生产者向一个已经装满产品且尚未被取走的缓冲区中投放产品。

     

    第七题

    读者写者问题

    这也是一个非常经典的多线程题目,题目大意如下:有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者读时写者也不能写。

     

    多线程相关题目就列举到此,如果各位有多线程方面的笔试面试题,欢迎提供给我,我将及时补上。谢谢大家。

     

    下一篇《多线程第一次亲密接触 CreateThread_beginthreadex本质区别》将从源代码的层次上讲解创建多线程的二个函数CreateThread_beginthreadex到底有什么区别,让你明明白白的完成与多线程第一次亲密接触。

     

     

    转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/7392749

     

    下面列出目录,方便大家查看。

    1.《秒杀多线程第一篇 多线程笔试面试题汇总

    2.《秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别

    3.《秒杀多线程第三篇 原子操作 Interlocked系列函数

    4秒杀多线程第四篇 一个经典多线程同步问题

    5秒杀多线程第五篇 经典线程同步 关键段CS

    6秒杀多线程第六篇 经典线程同步 事件Event

    7秒杀多线程第七篇 经典线程同步 互斥量Mutex

    8秒杀多线程第八篇 经典线程同步 信号量Semaphore

    9秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量

    10.《秒杀多线程第十篇 生产者消费者问题

    11.《秒杀多线程第十一篇 读者写者问题

    12.《秒杀多线程第十二篇 多线程同步内功心法——PV操作上

    13.《秒杀多线程第十三篇 多线程同步内功心法——PV操作下》即将发布

    14.《秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock

    15.《秒杀多线程第十五篇 关键段,事件,互斥量,信号量的“遗弃”问题

    16.    《秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据

     

      

     

    再后面文章还在草稿中,就暂时不列出目录了。

    展开全文
  • 需求背景:主要是做汇总计算界面界面(要显示:进度条、正在计算的提示信息、计算完之后的显示信息)跟底层计算分离,同时该界面能够实现复用,即能支持多种计算的进度...开一个计算线程用于计算,并跟界面主线程界...

    需求背景:

    主要是做汇总计算界面界面(要显示:进度条、正在计算的提示信息、计算完之后的显示信息)跟底层计算分离,同时该界面能够实现复用,即能支持多种计算的进度显示。

    所做产品计算类型有单机计算(土建计算和钢筋计算)、独立进程计算、局域网计算。


    详细分析:

    关键点是汇总显示界面要能复用,所以首先显示界面必须跟业务隔离,其次能提供三个接口用于设置显示界面的三个显示区域。

    开一个计算线程用于计算,并跟界面主线程界面交互,且该线程实现对外提供的三个接口(面向接口编程)。

    计算线程跟界面的交互有两种实现方式,其一:采用信号与槽的方式;其二,也可以采用发送事件的方式来实现(两种文中都给出关键实现)。


    主要类及UML:



    消息交互主要实现:

    实现方法一:采用信号与槽的方式(上述UML中采用的),GTJCalculateThread计算线程中实现的4update函数中发送对应的emit信号,主界面类GTJAllProgressForm中实现接受该信号的4种槽函数,并在构造函数中实现绑定。主要代码如下:

    connect(m_CalculatorThread,SIGNAL(snUpdateProgress(unsigned)), this, SLOT(slUpdateProgress(unsigned)),Qt::QueuedConnection);
    connect(m_CalculatorThread,SIGNAL(snUpdatePrompt(const QString)), this, SLOT(slUpdatePrompt(constQString)), Qt::QueuedConnection);
    connect(m_CalculatorThread,SIGNAL(snExportFinish(QString, QString, bool)), this,SLOT(slCalcFinished(QString, QString, bool)), Qt::QueuedConnection);
    connect(m_CalculatorThread,SIGNAL(snSetNetworkCalcInf(const QString)), this,SLOT(slSetNetworkCalcInf(const QString)), Qt::QueuedConnection);

    Qt::QueuedConnection连接方式,When emitted, the signal is queued until theevent loop is able to deliver it to the slot.
    假设当前有4slot连接到QPushButton::clicked(bool),当按钮被按下时,QT就把这个signal包装成一个QEvent,放到消息队列里。QApplication::exec()或者线程的QThread::exec()会从消息队列里取消息,然后调用 signal关联的几个slot。这种方式既可以在线程内传递消息,也可以跨线程传递消息。


    实现方法二:采用基于事件的方式,线程计算过程中需要向界面更新的时发送对应的事件(UML图如下),如更新提示信息QApplication::postEvent(m_pProgressFrom, new QUpdatePromptEvent("正在计算墙相关的工程量"));GTJAllProgressForm界面类中实现基类事件处理函数virtual void customEvent(QEvent * pEvent),在该函数中处理上面线程发出的事件,如QUpdatePromptEvent* updatePromptEvent = dynamic_cast<QUpdatePromptEvent*>(pEvent);
    if (updatePromptEvent!= nullptr){
    m_pMsgPromptLabel->setText(updatePromptEvent->m_strPrompt);}


    展开全文
  • Android多线程:你必须要了解的多线程基础知识汇总

    千次阅读 多人点赞 2019-05-13 08:59:23
    详细的多线程基础知识汇总,希望你们喜欢。 目录 1. 线程 - 介绍 1.1 定义 一个基本的CPU执行单元 & 程序执行流的最小单元 比进程更小的可独立运行的基本单位,可理解为:轻量级进程 组成:线程ID + 程序...

    前言

    • 多线程的应用在开发中非常常见
    • 今天,我将献上一份全面 & 详细的多线程基础知识汇总,希望你们喜欢。

    目录

    示意图


    1. 线程 - 介绍

    1.1 定义

    一个基本的CPU执行单元 & 程序执行流的最小单元

    1. 比进程更小的可独立运行的基本单位,可理解为:轻量级进程
    2. 组成:线程ID + 程序计数器 + 寄存器集合 + 堆栈
    3. 注:线程自己不拥有系统资源,与其他线程共享进程所拥有的全部资源。

    1.2 作用

    减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。

    1.3 状态说明

    拥有类似于进程的就绪、阻塞、运行3种基本状态,具体如下图:

    示意图


    2. 线程分类

    线程主要分为:守护线程、非守护线程(用户线程)

    2.1 守护线程

    • 定义:守护用户线程的线程,即在程序运行时为其他线程提供一种通用服务
    • 常见:如 垃圾回收线程
    • 设置方式:
    //设置该线程为守护线程
    thread.setDaemon(true);
    

    2.2 非守护线程(用户线程)

    主要包括:主线程 & 子线程。

    a. 主线程(UI线程)

    • 定义:Android系统在程序启动时会自动启动一条主线程
    • 作用:处理四大组件与用户进行交互的事情(如UI、界面交互相关)
    • 注:因为用户随时会与界面发生交互,因此主线程任何时候都必须保持很高的响应速度,所以主线程不允许进行耗时操作,否则会出现ANR

    b. 子线程(工作线程)

    • 定义:手动创建的线程
    • 作用:耗时的操作(网络请求、I/O操作等)

    2.3 守护线程 与 非守护线程的区别

    区别:虚拟机是否已退出:

    • 当所有用户线程结束时,因为没有守护的必要,所以守护线程也会终止,虚拟机也同样退出;
    • 反过来,只要任何用户线程还在运行,守护线程就不会终止,虚拟机就不会退出

    3. 线程优先级

    3.1 表示

    线程优先级分为10个级别,分别用Thread类常量表示。

    // 譬如:
    Thread.MIN_PRIORITY // 优先级1
    Thread.MAX_PRIORITY // 优先级10
    

    3.2 设置

    • 通过方法setPriority(int grade)进行优先级设置
    • 默认线程优先级是5,即 Thread.NORM_PRIORITY

    4. 多线程 - 介绍

    4.1 定义

    多个线程同时进行,即多个任务同时进行

    1. 其实,计算机任何特定时刻只能执行一个任务;
    2. 多线程只是一种错觉:只是因为JVM快速调度资源来轮换线程,使得线程不断轮流执行,所以看起来好像在同时执行多个任务而已

    4.2 作用

    Android官方声明:在多线程编程时有两大原则:

    1. 不要阻塞UI线程(即主线程):单线程会导致主线程阻塞,然后出现ANR错误:主线程被阻塞超过5s则会出现错误
    2. 不要在UI线程之外更新UI组件

    所以,我们需要多线程(1个主线程+x个工作线程)来解决上述两个问题:

    • 将耗时任务放在工作线程中进行

    对应原则:不要阻塞UI线程(即主线程),即当我们有耗时的任务,如果在UI线程中执行,那就会阻塞UI线程了,必须要抛到工作线程中去执行;

    • 将更新UI组件放在主线程中进行

    对应原则:不要在UI线程之外访问UI组件,即更新UI组件时,一定得在UI线程里执行,故需要在工作线程中执行的任务结果返回到UI线程中去更新组件

    4.3 应用场景

    • 将耗时任务从主线程抛到工作线程中进行
    • 将更新UI组件任务从工作线程抛到主线程中进行

    4.4 实现方式

    Android多线程实现方式包括:
    示意图


    5. 线程调度

    5.1 调度方式

    • 当系统存在大量线程时,系统会通过时间片轮转的方式调度线程,因此线程不可能做到绝对的并发
    • 处于就绪状态(Runnable)的线程都会进入到线程队列中等待CPU资源

    同一时刻在线程队列中可能有很多个

    • 在采用时间片的系统中,每个线程都有机会获得CPU的资源以便进行自身的线程操作;当线程使用CPU资源的时间到后,即时线程没有完成自己的全部操作,JVM也会中断当前线程的执行,把CPU资源的使用权切换给下一个队列中等待的线程。

    被中断的线程将等待CPU资源的下一次轮回,然后从中断处继续执行

    5.2 调度优先级

    Java虚拟机(JVM)中的线程调度器负责管理线程,并根据以下规则进行调度:

    1. 根据线程优先级(高-低),将CPU资源分配给各线程
    2. 具备相同优先级的线程以轮流的方式获取CPU资源

    5.3 示例

    • 存在A、B、C、D四个线程,其中:A和B的优先级高于C和D(A、B同级,C、D同级)
    • 那么JVM将先以轮流的方式调度A、B,直到A、B线程死亡,再以轮流的方式调度C、D

    6. 线程同步

    • 定义:当线程A使用同步方法A时,其他线程必须等到线程A使用完同步方法A后才能使用
    • 同步方法用关键字 Synchronized 进行修饰
    public synchronized void Sb_Android(){
            }
    

    7. 线程联合

    • 定义:线程A在占有CPU资源期间,通过调用join()方法中断自身线程执行,然后运行联合它的线程B,直到线程B执行完毕后线程A再重新排队等待CPU资源,这个过程称为线程A联合线程B
    • 线程A联合线程B,即在线程A的执行操作里定义:
    B.join();
    

    8. 进程 - 介绍

    8.1 定义

    是进程实体的运行过程 & 系统进行资源分配和调度的一个独立单位

    8.2 作用

    使多个程序可 并发执行,以提高系统的资源利用率和吞吐量
    在这里插入图片描述

    8.3 进程状态说明(前三个为基础状态)

    注意 就绪、阻塞状态的区别:

    1. 就绪状态:进程缺少的资源 = 处理机,只要获得处理机资源立即执行
    2. 等待状态:指 进程缺少其他资源(除了处理机) / 等待某一事件

    8.4 状态转换

    在这里插入图片描述

    示意图


    9. 线程与进程的区别

    在这里插入图片描述


    10. 单/多进程、单/多线程的区别

    假设:进程 = 桌子,单线程 = 1个人吃饭

    • 单进程、单线程:一个人在一个桌子上吃饭
    • 单进程、多线程:多个人在同一个桌子上一起吃饭
    • 多进程、单线程:多个人每个人在自己的桌子上吃饭

    11. 总结

    • 本文主要全面介绍了多线程中的基础知识
    • 接下来,我会继续讲解多线程开发中的其他知识,感兴趣的同学可以继续关注本人的技术博客carson_ho的CSDN博客

    请帮顶 / 评论点赞!因为你的鼓励是我写作的最大动力!

    展开全文
  • 多线程并行执行,然后汇总结果、多线程并行执行,汇总结果。 MultiThread,ResultVo> multiThread = new MultiThread,ResultVo>(threadList){ @Override public List<ResultVo> outExecute(int currentThread...
  • 单线程 求和器 VS 多线程 求和器 1)线程池 多个线程 一起并发执行,性能很生猛 2)CountDownLatch 主线程 使用 latch.await() 阻塞住,直到所有 子任务 都执行完毕了,才会继续向下执行。这样就保...

    目录结构

    抽象类:求和器

    单线程 求和器 VS 多线程 求和器

    1)线程池

    • 多个线程 一起并发执行,性能很生猛

    2)CountDownLatch

    • 主线程 使用 latch.await() 阻塞住,直到所有 子任务 都执行完毕了,才会继续向下执行。这样就保证了 逻辑的正确性

    • 所有 子任务 共享同一个 CountDownLatch 变量,实现 协同合作

    • 所有 子任务 的 finally块 中,必须要 latch.countDown() ,确保 "无论 正确、异常 都会 countDown",否则 主线程 会由于 "某一个 子任务 没有 countDown 过,就 执行结束了,导致 latch 最终无法被 countDown 到 0 ",而被 永远挂住

    3)private AtomicInteger sum

    • 多个线程 会并发 操作同一个 Integer 类型变量,为了确保 线程安全,要使用 Atomic 原子类型

    源码

    SinglethreadSummator

    package com.lsy.test;
    
    
    /**
     * 单线程 求和器
     */
    public class SinglethreadSummator extends Summator{
    
        private int sum = 0;
    
        private int getValue() {
            System.out.println("SinglethreadSummator.getValue()");
            try {
                Thread.sleep(400);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            return 1;
        }
    
        @Override
        public int sum(int count) {
    
            for(int i=0; i<=count-1; i++) {
                sum = sum + getValue();
            }
    
            return sum;
    
        }
    
    
    
    }

    MultithreadSummator

    package com.lsy.test;
    
    import java.util.concurrent.CountDownLatch;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.atomic.AtomicInteger;
    
    /**
     * 多线程 求和器
     */
    public class MultithreadSummator extends Summator{
    
        private AtomicInteger sum = new AtomicInteger(0); //由于是 多线程,所以要使用 原子类型
        private int corePoolSize = 10;
    
        public int getValue() {
            System.out.println("MultithreadSummator.getValue()");
            try {
                Thread.sleep(400);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            return 1;
        }
    
    
        /**
         * 内部类
         */
        private class Core implements Runnable {
            private CountDownLatch latch;
    
            public Core(CountDownLatch latch) {
                this.latch = latch;
            }
    
            @Override
            public void run() {
    
                try {
    
                    sum.getAndAdd(getValue());
    
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    latch.countDown(); //无论 正确 或 异常,都必须 countDown,否则 main线程 会被 countDown.await() 一直挂住
                }
    
            }
        }
    
        @Override
        public int sum(int count) {
    
            CountDownLatch latch = new CountDownLatch(count);
    
            ExecutorService service = Executors.newFixedThreadPool(corePoolSize);
    
            try {
    
                //发起 count个 任务,并发执行
                for(int i=0; i<=count-1; i++) {
                    service.submit(new Core(latch));
                }
    
                //等待 所有线程 都 执行完毕
                latch.await();
    
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                service.shutdown();
            }
    
            return sum.get();
        }
    
    
    }

    转载于:https://my.oschina.net/u/2602893/blog/2876935

    展开全文
  • 多线程计算数据,然后合并数据

    千次阅读 2014-09-22 19:19:32
    多线程计算数据,然后合并数据
  • * 思路:用实现runnable接口的方式来实现多线程同时完成任务,使用同步方法来解决多线程的临界资源问题 * 确保每次只有一个线程能够执行任务,声明的和为静态变量,实现共享属性,不过此方法可能比较耗内存 * @...
  • 一、什么是线程和进程 进程:1.操作系统结构的基础 2.操作系统进行资源分配和调度的独立单位 线程:进程中独立运行的子任务,程序的...二、多线程技术目的cpu是运算和控制的中心,在cpu运行过程中,同一时刻只能运行
  • Java 多线程面试问题汇总

    千次阅读 2015-07-08 14:33:59
    这篇文章是我最近看15个顶级Java多线程面试题及回答这篇帖子,根据文中所列问题在网上找的答案汇总。或许某些解答不尽如人意,欢迎大家来补充和指正。另外感谢这篇帖子的翻译者赵峰以及所有在网络上分享问题答案的...
  • 多线程实现数据汇总

    千次阅读 2019-04-06 11:03:47
    背景:当需要进行大规模数据计算的时候,整体处理的效率较低,因此需要将数据分块计算然后,最终得到结果。 1、首先创建一个计算划分类 package com.smart.generic; import lombok.Getter; import lombok.Setter...
  • 多线程16: 多线程笔试面试题汇总

    万次阅读 2013-08-22 17:38:53
    第一篇 多线程笔试面试题汇总    多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究...
  • 秒杀多线程 多线程笔试面试题汇总

    千次阅读 2014-03-24 22:57:40
     本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT...系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”。有了“招式”和
  • 面试题汇总二 Java 多线程篇 面试题汇总三 Java 集合篇 面试题汇总四 JVM 篇 面试题汇总五 Spring 篇 面试题汇总六 数据库篇 面试题汇总七 计算机网络篇 目录 前言 多线程 开启线程的三种方式? 什么是...
  • 假设有一个计算量非常大的任务,使用单线程处理会花费很长时间才能处理完成,这时候可以考虑使用多线程分批计算数据,然后再汇总数据输出。在这里,使用了CyclicBarrier来实现。这个类的功能就是指定特定的线程数,...
  • 多线程笔试面试题汇总

    千次阅读 2012-09-14 18:36:38
    系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”。有了“招式”和“内功心法”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题。  --------...
  • 最近由于工作需要,我学习和整理...1 多线程笔试面试题汇总 多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我
  • 多线程计算整型数组数据总和: #include <stdio.h> #include <stdlib.h> #include <Windows.h> #include<process.h> #include <time.h> #define N 1024 struct Myinfo { ...
  • windows 多线程 笔试面试题汇总

    千次阅读 2012-04-09 17:23:23
    系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”。有了“招式”和“内功心法”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题。  -----
  • 多线程并行执行,然后汇总结果

    千次阅读 2019-01-18 20:57:37
    很多时间,需要多线程并行处理,然后汇总处理结果,例如,因为请参数数据量非常大,所以只能分批查询,然后将分批查询的结果汇总到一个数组中。 一、多线程类 import java.util.ArrayList; import java.util.List...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,065
精华内容 16,426
关键字:

多线程计算汇总