通过线程将数据库读取的数据放在java队列,然后通过多线程处理数据的解决办法
各位大神,求帮助,我现在项目中有一个需求,对9张单表的有增删改的操作的时候
将数据通过单线程的方式放入java队列中,然后通过多线程的方式下发。我会建一张
下发失败的表,如果通过java队列下发失败了的数据会存入下发表,等待下次下发。
现在我做的是在这9张表有增、删、改、操作的时候通过队列管理器将数据放入队列中,然后用多线程的方式下发。
现在求助大家的是前面的步骤,就是队列管理器中的功能,也就是单线程放数据到队列中及通过队列多线程下发的步骤。由于小弟未在项目中真正的写过多线程的实例,特真心请求大神帮助,帮忙修改下代码的逻辑,小弟写了个初稿,肯定未完善,请大神帮忙完善下,多多考虑,非常感谢大家了!
以下是我初写的队列管理器的功能。请大神帮忙修改下,谢了
public class TaskQueueManage {
public static BlockingQueue queue;
private TaskQueueManage() {
queue = new LinkedBlockingQueue();
}
private static volatile TaskQueueManage instance;
public static TaskQueueManage getIstance() {
if (instance == null) {
synchronized (TaskQueueManage.class) {
if (instance == null) {
instance = new TaskQueueManage();
}
}
}
return instance;
}
//用线程将数据库中有增、删 、改操作的数据放入队列中
public static void put(final Object obj) {
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
//将读取的数据库的数据放入队列
queue.put(obj);
} catch (Exception e) {
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
//用多线程取出队列中的数据
public static void take() {
//下发用线程池,将用多线程进行下发
ExecutorService service = Executors.newScheduledThreadPool(5);
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
Object obj = queue.take();
//取出数据,待操作....
} catch (Exception e) {
}
}
};
service.equals(runnable);
}
}
真心求大家的帮助,谢谢了!
将数据通过单线程的方式放入java队列中,然后通过多线程的方式下发。我会建一张
下发失败的表,如果通过java队列下发失败了的数据会存入下发表,等待下次下发。
现在我做的是在这9张表有增、删、改、操作的时候通过队列管理器将数据放入队列中,然后用多线程的方式下发。
现在求助大家的是前面的步骤,就是队列管理器中的功能,也就是单线程放数据到队列中及通过队列多线程下发的步骤。由于小弟未在项目中真正的写过多线程的实例,特真心请求大神帮助,帮忙修改下代码的逻辑,小弟写了个初稿,肯定未完善,请大神帮忙完善下,多多考虑,非常感谢大家了!
以下是我初写的队列管理器的功能。请大神帮忙修改下,谢了
public class TaskQueueManage {
public static BlockingQueue queue;
private TaskQueueManage() {
queue = new LinkedBlockingQueue();
}
private static volatile TaskQueueManage instance;
public static TaskQueueManage getIstance() {
if (instance == null) {
synchronized (TaskQueueManage.class) {
if (instance == null) {
instance = new TaskQueueManage();
}
}
}
return instance;
}
//用线程将数据库中有增、删 、改操作的数据放入队列中
public static void put(final Object obj) {
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
//将读取的数据库的数据放入队列
queue.put(obj);
} catch (Exception e) {
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
//用多线程取出队列中的数据
public static void take() {
//下发用线程池,将用多线程进行下发
ExecutorService service = Executors.newScheduledThreadPool(5);
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
Object obj = queue.take();
//取出数据,待操作....
} catch (Exception e) {
}
}
};
service.equals(runnable);
}
}
真心求大家的帮助,谢谢了!
...全文
相关推荐
秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据
《秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据》 http://blog.csdn.net/morewindows/article/details/8646902 配套程序 在《秒杀多线程系列》的前十五篇中介绍多线程的相关概念,多线程同步互斥问题《秒杀多线程第四篇一个经典的多线程同步问题》及解决多线程同步互斥的常用方法——关键段、事件、互斥量、信号量、读写锁。为了让大家更加熟练运用多线程,将会有十篇文章来讲解十个多线程使用案例,相信看完这十篇后会让你能更加游刃有余的使用多线程。
java多线程加队列上传文件_后台处理
java多线程加队列上传文件_后台处理
java多线程模拟队列实现排队叫号
java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号
java多线程读取文件
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
java多线程实现大批量数据导入源码
java多线程实现大批量数据切分成指定份数的数据,然后多线程处理入库或者导出,线程的个数和每份数据的数量都可以控制


Java SE
