Java 使用多线程读取信息
我有下一个场景:Java 使用多线程读取信息,java,multithreading,sockets,threadpool,batch-processing,Java,Multithreading,Sockets,Threadpool,Batch Processing,我有下一个场景: 服务器从套接字发送大量信息,因此我需要读取这些信息并进行验证。其思想是使用20个线程和批处理,每次批处理大小为20时,线程必须将信息发送到数据库,并保持从套接字读取,等待更多信息 我不知道这样做的最佳方式是什么,我在想: 创建一个将读取信息的套接字 创建一个执行器(Executors.newFixedThreadPool(20))并验证de信息,将每一行添加到列表中,当大小为20时,执行将向数据库发送信息的可运行类 提前感谢您的帮助。您不想用一大堆线程来完成此操作。最好使用只有
Executors.newFixedThreadPool(20)
)并验证de信息,将每一行添加到列表中,当大小为20时,执行将向数据库发送信息的可运行类提前感谢您的帮助。您不想用一大堆线程来完成此操作。最好使用只有两个线程的生产者-消费者模型 生产者线程从套接字中读取记录并将其放在队列中。它所做的就是:读取记录、添加到队列、读取下一条记录。起泡,冲洗,重复 使用者线程从队列中读取记录,对其进行验证,然后将其写入数据库。如果您希望对项目进行批处理,以便一次向数据库写入20条记录,那么您可以让消费者将记录添加到列表中,当列表达到20条时,执行数据库更新 您可能希望在生产者-消费者程序中查找有关使用Java
BlockingQueue
的信息
你说过你一天可以从插座上收到一百万张唱片。每秒只有12条记录。除非您的验证是处理器密集型的,否则一个线程可能每秒可以处理1200条记录
在任何情况下,您的主要瓶颈将是数据库更新,这可能不会从多个线程中受益。您不希望用一大堆线程来实现这一点。最好使用只有两个线程的生产者-消费者模型 生产者线程从套接字中读取记录并将其放在队列中。它所做的就是:读取记录、添加到队列、读取下一条记录。起泡,冲洗,重复 使用者线程从队列中读取记录,对其进行验证,然后将其写入数据库。如果您希望对项目进行批处理,以便一次向数据库写入20条记录,那么您可以让消费者将记录添加到列表中,当列表达到20条时,执行数据库更新 您可能希望在生产者-消费者程序中查找有关使用Java
BlockingQueue
的信息
你说过你一天可以从插座上收到一百万张唱片。每秒只有12条记录。除非您的验证是处理器密集型的,否则一个线程可能每秒可以处理1200条记录
在任何情况下,您的主要瓶颈将是数据库更新,这可能不会从多个线程中受益。您不希望用一大堆线程来实现这一点。最好使用只有两个线程的生产者-消费者模型 生产者线程从套接字中读取记录并将其放在队列中。它所做的就是:读取记录、添加到队列、读取下一条记录。起泡,冲洗,重复 使用者线程从队列中读取记录,对其进行验证,然后将其写入数据库。如果您希望对项目进行批处理,以便一次向数据库写入20条记录,那么您可以让消费者将记录添加到列表中,当列表达到20条时,执行数据库更新 您可能希望在生产者-消费者程序中查找有关使用Java
BlockingQueue
的信息
你说过你一天可以从插座上收到一百万张唱片。每秒只有12条记录。除非您的验证是处理器密集型的,否则一个线程可能每秒可以处理1200条记录
在任何情况下,您的主要瓶颈将是数据库更新,这可能不会从多个线程中受益。您不希望用一大堆线程来实现这一点。最好使用只有两个线程的生产者-消费者模型 生产者线程从套接字中读取记录并将其放在队列中。它所做的就是:读取记录、添加到队列、读取下一条记录。起泡,冲洗,重复 使用者线程从队列中读取记录,对其进行验证,然后将其写入数据库。如果您希望对项目进行批处理,以便一次向数据库写入20条记录,那么您可以让消费者将记录添加到列表中,当列表达到20条时,执行数据库更新 您可能希望在生产者-消费者程序中查找有关使用Java
BlockingQueue
的信息
你说过你一天可以从插座上收到一百万张唱片。每秒只有12条记录。除非您的验证是处理器密集型的,否则一个线程可能每秒可以处理1200条记录
在任何情况下,您的主要瓶颈将是数据库更新,这可能不会从多线程中受益。我认为使用多线程只会使代码更加复杂。你知道你有一个问题,使用更多的线程是解决方案吗?您进行了哪些测量?每天发送的行数可能为100万,因此使用multhread会更容易,因为它是一个在线系统,信息获取数据库的速度越快,系统就越好。每天一百万行的平均速度不到每秒11.6行。我认为使用多线程只会让代码变得更复杂。你知道你有一个问题,使用更多的线程是解决方案吗?您进行了哪些测量?每天发送的行数可能为100万,因此使用multhread会更容易,因为是在线系统,速度越快