我有一个任务来创建一个独立的java应用程序来做以下事情:
我目前的设计思路是:
每个线程都有逻辑:
if(getNextJobFromList()!=null)
//在批更新中准备并插入语句
- 关闭数据库资源
- 给出输出状态
在这里,时间是一个非常大的制约因素。
现在的问题是:
>
我可以使用执行器框架更快吗?在我的伪代码中,线程在其生命周期内保持数据库连接。我可以在执行器框架中做到这一点吗?
还有其他方法可以优化吗?
提前感谢:)
你可以用遗嘱执行人来做这件事。这听起来不是一个好主意,你会用大量的工作淹没数据库,你的大多数线程都会花时间等待。
我认为你最好对数据库进行批量导入(如果你使用Oracle,使用SQL*加载器,其他数据库也有类似的工具),不需要多线程。批量复制速度非常快,它可以关闭约束检查和索引修改,只需要读取数据。它比JDBC快了几个数量级,如果你想要速度,你应该去看看。
问题内容: 我正在研究用于并行计算JavaSeis.org的软件开发框架。我需要一个强大的机制来报告线程异常。在开发过程中,了解异常来自何处具有很高的价值,因此我想在过度报告方面犯错。我还希望能够在线程中处理Junit4测试。下面的方法是合理的还是有更好的方法? 问题答案: 我不相信在使用时有标准的“钩子”来获取这些异常。但是,如果您需要支持(听起来很合理,假设您使用),则始终可以包装Callab
假设我有一个Executors静态工厂方法的ExecutorService实例。 如果我从某个线程提交了一个调用,其中RetVal不是线程安全的本地实例化对象,那么当我从同一个线程获得()它时,我需要担心retvals的完整性吗?人们说局部变量是线程安全的,但我不确定当您返回一个本地实例化的对象并从其他线程接收它时,它是否适用。 下面是我的定制实现,我只是为了测试。您可以忽略EType枚举。
在一个实用程序库中,我正在创建一个执行器服务 然后,主线程将向该服务发布一些任务。当主线程完成时,我想关闭Executor服务,以允许应用程序退出。 问题是我只能更改实用程序库中的代码。我考虑的一个选项是使用守护线程。但在发布到该服务的任务完成之前,它会突然关闭。
问题内容: 假设我有一个利用该框架的应用程序 当我在调试器中运行此应用程序时,将使用以下(默认)名称创建一个线程:。如你所见,这并不是非常有用,而且据我所知,该框架没有提供一种简便的方法来命名已创建的线程或线程池。 那么,如何为线程/线程池提供名称呢?例如,。 问题答案: 你可以提供一个到。工厂将负责创建线程,并将能够为其命名。 引用Javadoc: 创建新线程 使用创建新线程。如果没有另外指定,
即;每个可调用方调用progressBarUpdate(): 每个doSomeStuff()都有自己的异常处理,如果发生错误或抛出异常,则返回一个空值。这就是为什么返回类型是List,并且在这种情况下返回null的原因。调用项和它们返回的文件列表之间没有交叉,它们都维护自己的文件列表。 我发现它工作得很好,但偶尔会抛出窗体的InterruptedException: 我修改了代码,使条件nv>=m