Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的多线程查询_Java_Multithreading - Fatal编程技术网

java中的多线程查询

java中的多线程查询,java,multithreading,Java,Multithreading,我去面试了,在那里我遇到了一个类似这样的问题 int RetrieveAmount(String User) Throws UnableToRetrieveAmountException() { int amount = 0; int amount1 = RetrieveFromSystem1(User); int amount2 = RetrieveFromSystem2(User); amount = amount1+amount2; r

我去面试了,在那里我遇到了一个类似这样的问题

int RetrieveAmount(String User) Throws UnableToRetrieveAmountException() {
     int amount = 0;
     int amount1 = RetrieveFromSystem1(User);
     int amount2 = RetrieveFromSystem2(User);

     amount = amount1+amount2;

     return amount;

}
RetrieveAmount是一个同步函数

一,。修改代码,使RetrieveFromSystemXString用户应彼此独立运行,即,如果第一个函数需要10秒,第二个函数也需要10秒才能执行,则应并行运行

二,。RetrieveFromSystemX花费的时间比超时时间要长

谁能在这方面给我一些建议吗


对于第一部分,我可以使用固定线程池(线程数为2)的执行器,并且可以使用两个单独的锁来锁定这些函数中的每一个。现在两个线程可以并行执行RetrieveAmount。请让我知道我是否在思考仪式的方向


有谁能告诉我问题的第二部分。RetrieveFromSystem1user和RetrieveFromSystem2user都可以在方法体中启动自己的线程。对这两个同步没有任何限制,它应该可以工作。 2线程类应该有如下代码

长启动时间=System.currentTimeMillis;whiletrue{if System.currentTimeMillis-startTime<10000 psudeocode:getData;else Thread.currentThread.interrupt}


在其运行过程中

听起来您需要的是线程。joinint millisI可以使用线程数为2的固定线程池的执行器,并且。。。如果您有一个用于运行后台任务的ExecutorService,您只需使用它,而不必担心它有多少线程。这就是ExecutorService的全部要点:它将负责知道要配置多少工作线程的代码与需要使用工作线程的代码解耦。。。如果在检索结果之前不返回,是否创建自己的线程?我原以为使用线程的目的是重叠两次检索。