程序是,从HTML写数据,通过javaservlet接收数据,传给Java的一个对象处理数据。
我想是,java对象处理完一个数据之后,再处理下一个。
但是如果HTML里写数据过快,则java对象再未处理完这个数据时,接收到新数据交叉或者混乱的顺序处理新来的数据。
public void run() {
synchronized (this.charthreshold) {
if(index==0){ //Determine the end of this array
index=1;
System.out.println("***************************THREAD START: "+index);
//java对象,处理数据
System.out.println("***************************THREAD END");
index=0;
}
}
}
但是,这样子改了之后,通过thread限制。但是问题是,数据并不是按照HTML写的顺序进入java处理对象的。比如HTML写的是1,2,3,4,5,6,7,...。通过thread传递给java对象的却是1,2,4,5,7,3,...请问原因是什么,该如何处理?Java线程
我想是,java对象处理完一个数据之后,再处理下一个。
但是如果HTML里写数据过快,则java对象再未处理完这个数据时,接收到新数据交叉或者混乱的顺序处理新来的数据。
public void run() {
synchronized (this.charthreshold) {
if(index==0){ //Determine the end of this array
index=1;
System.out.println("***************************THREAD START: "+index);
//java对象,处理数据
System.out.println("***************************THREAD END");
index=0;
}
}
}
但是,这样子改了之后,通过thread限制。但是问题是,数据并不是按照HTML写的顺序进入java处理对象的。比如HTML写的是1,2,3,4,5,6,7,...。通过thread传递给java对象的却是1,2,4,5,7,3,...请问原因是什么,该如何处理?Java线程
可以采用自定义一个锁来控制。
public void run() {
if (!locked) {
locked = true;
if(!statck.isEmpty()){ //栈里面如果数据不为空则数据从栈里面取.
//这样就可以保持数据保存的顺序是正确的了。
data = statck.getData();
}
if(index==0){ //Determine the end of this array
index=1;
System.out.println("***************************THREAD START: "+index);
//java对象,处理数据
//数据在data 中
System.out.println("***************************THREAD END");
index=0;
}
locked = true;
}else{
statck.saveData(data);//当前有数据正在处理,将数据保存在一个堆栈里面
}
}
//上面只是个大致思路,可以参考下。
1.是在HTML里添加有序队列?
2.用什么方式?数组或者其他?
因为要求速度,添加有序队列是否需要排序?