刚遇到一个问题,一个线程从数据库中取给定条数的数据,放入ArrayBlockingQueue中,另外有10个线程一直在运行,同时从ArrayBlockingQueue中take数据,然后进行处理(每个线程处理一个,处理过程比较长,所以才用多线程),可是现在遇到的问题就是,在从数据库中一次取1条数据的时候,本来设想的情况是只有一个线程能从ArrayBlockingQueue中取出数据,其他线程进入等待.可是现在的情况却是,这10个线程同时获取了同样的数据,而且,第二次循环的时候还是会出现同样的数据.如果一次从数据库中取出5条,那么就会随即冗余某几条数据,请问应该如何解决?
我现在只能对这个take方法加锁,然后就是调用http请求的方法,这个时间需要比较长.