Java 不使用线程的异步DB写入

Java 不使用线程的异步DB写入,java,multithreading,events,asynchronous,nio,Java,Multithreading,Events,Asynchronous,Nio,在我当前的项目中,如果需要在db中异步写入某些内容(记录一些数据),我们将使用线程池执行器。 由于它只是一个IO操作,而不是为每个写调用使用线程,所以我们可以使用类似于事件驱动机制的机制。 其中一个线程将在while循环中运行,并将进行异步db调用。类似于java NIO,网络调用也是如此 怎么样?怎么样?不,不管你做什么,你至少需要一个线程。如果您确实有一个线程,那么仍然会有一个额外的线程运行select() 我不确定您在当前项目中是如何实现它的,但即使使用Executor(正如建议的那样,S

在我当前的项目中,如果需要在db中异步写入某些内容(记录一些数据),我们将使用线程池执行器。 由于它只是一个IO操作,而不是为每个写调用使用线程,所以我们可以使用类似于事件驱动机制的机制。
其中一个线程将在while循环中运行,并将进行异步db调用。类似于java NIO,网络调用也是如此

怎么样?

怎么样?

不,不管你做什么,你至少需要一个线程。如果您确实有一个线程,那么仍然会有一个额外的线程运行
select()


我不确定您在当前项目中是如何实现它的,但即使使用Executor(正如建议的那样,
SingleThreadExecutor
就足够了),它也不会非常复杂。

不,无论您做什么,您都至少需要一个线程。如果您确实有一个线程,那么仍然会有一个额外的线程运行
select()


我不确定您在当前项目中是如何实现它的,但即使使用Executor(正如建议的那样,
SingleThreadExecutor
就足够了),它也不会非常复杂。

在这种情况下,语句(更新)是否只会按顺序运行?慢语句会影响其他语句吗?N个语句执行每个语句需要t,即使DB可以并行处理它们,也需要N*t?更新队列的增长速度可能比同时尝试许多请求的速度要快?我假设插入日志语句不会是一个昂贵的操作(如果是,那么您应该调整数据库,而不是Java代码)。即使这样,并行化也不会有什么帮助,因为它们使用的是同一个表。更有效的方法是进行批处理。这个问题并没有提供太多的信息。在这种情况下,语句(更新)不是只按顺序运行吗?慢语句会影响其他语句吗?N个语句执行每个语句需要t,即使DB可以并行处理它们,也需要N*t?更新队列的增长速度可能比同时尝试许多请求的速度要快?我假设插入日志语句不会是一个昂贵的操作(如果是,那么您应该调整数据库,而不是Java代码)。即使这样,并行化也不会有什么帮助,因为它们使用的是同一个表。更有效的方法是进行批处理。这个问题并没有提供太多的信息。