java 数据同步要怎么实现才好

java 数据同步要怎么实现才好,第1张

首先得弄清楚 你的插入是对同一数据库 还是不同数据库的 *** 作数据量大的时候 是否要求即时性 是否牵扯到事物

本人推荐 做一个跑批程序 进行同步数据 这样能提高代码性能 以及程序性能 当然 你所说的瓶颈 无非就是大数据量对数据库的 *** 作次数 以及海量数据造成程序效率的一个瓶颈 谢谢!

Java中交互方式分为同步和异步两种:

同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;

异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。

区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。

在Java中一共有四种方法支持同步,其中前三个是同步方法,一个是管道方法。管道方法不建议使用。

wait()/notify()方法

await()/signal()方法

BlockingQueue阻塞队列方法

PipedInputStream/PipedOutputStream

阻塞队列的一个简单实现:

public class BlockingQueue {

 private List queue = new LinkedList();

 private int  limit = 10;

 public BlockingQueue(int limit){

   thislimit = limit;

 }

 public synchronized void enqueue(Object item)throws InterruptedException  {

   while(thisqueuesize() == thislimit) {

     wait();

   }

   if(thisqueuesize() == 0) {

     notifyAll();

   }

   thisqueueadd(item);

 }

 public synchronized Object dequeue()  throws InterruptedException{

   while(thisqueuesize() == 0){

     wait();

   }

   if(thisqueuesize() == thislimit){

     notifyAll();

   }

   return thisqueueremove(0);

 }}

在enqueue和dequeue方法内部,只有队列的大小等于上限(limit)或者下限(0)时,才调用notifyAll方法。如果队列的大小既不等于上限,也不等于下限,任何线程调用enqueue或者dequeue方法时,都不会阻塞,都能够正常的往队列中添加或者移除元素。

wait()/notify()方法

生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。

要解决该问题,就必须让生产者在缓冲区满时休眠(要么干脆就放弃数据),等到下次消费者消耗缓冲区中的数据的时候,生产者才能被唤醒,开始往缓冲区添加数据。同样,也可以让消费者在缓冲区空时进入休眠,等到生产者往缓冲区添加数据之后,再唤醒消费者。

以上就是关于java 数据同步要怎么实现才好全部的内容,包括:java 数据同步要怎么实现才好、java同步和异步的区别和应用、java多线程解决同步问题的几种方式,原理和代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9641416.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存