JAVA开启三个线程,去读取数组中的数据不能重复

Python016

JAVA开启三个线程,去读取数组中的数据不能重复,第1张

set中是不能存在重复数的。

这个可以通过修改数据时间来判断。例如:表中有个字段读取时间。当这个客户读取10条数据的时候,更新读取时间为当前时间。然后下个客户读取的时候,判断时间在半个小时内,没有更新的数据。就OK了。

例如:一个线程正准备往进去写数据,突然切到另一个线程它先写了进入,在切回来这个线程并不知道这个位置已经写入了数据,所以它还是会傻傻的写入数据,这样另一个线程的数据就被覆盖了。如果是一边添加 ,一边遍历的话程序会产生ConcurrentModificationException异常。

所以要用copyonwritearraylist是最好的选择,但是注意的是,添加元素时它的性能不是很好 。

你的属性在初始化时,构造方法还没有执行,此时new Find(x,a,b)中参数的值还是空的,所以出现你那个错误。线程类应该改为:

class ThdFind extends Thread {

protected int a, b, x

protected int p[] = new int[10000]

Find findson = null

public ThdFind(int p[], int a, int b) {

this.a = a

this.b = b

this.p = p

findson = new Find(x, a, b)

}

public void run() {

findson.f(p)

}

}