java的多线程同步无法正常,求教高手!!!
searchGrid中的数据总是不正常,无法达到预期结果。
以下为部分代码
import java.net.*;
import java.io.*;
import java.util.*;
//Grid为自定义的表格控件类
//以下2个为非同步函数
//set(1,irow,Integer.toString(irow));
//addRow(data);
public class searchThread extends Thread {
int inew=0;
int irowcount=0;
ThreadGroup gridgroup;
CheckGrid list[];
Grid searchGrid;
public SendThread(Grid grid)
{
searchGrid = grid;
}
public synchronized int add()
{
inew = inew +1;
return inew;
}
public void run() {
inew = searchGrid.getRowCount();
irowcount = inew;
int isize = 8;
list = new CheckGrid[isize];
CheckGrid checkgrid;
gridgroup =new ThreadGroup("GRIDGROUP");
for(int j=0;j<isize;j++)
{
checkgrid = new CheckGrid();
list[j]= checkgrid;
}
for(int j=0;j<isize;j++)
{
list[j].start(gridgroup,"multigrid" + j);
}
while (gridgroup.activeCount()>0)
{
try{
sleep(100);
}catch (InterruptedException e){}
}
}
public void setStop()
{
if (gridgroup!=null)
gridgroup.stop();
this.stop();
}
class CheckGrid implements Runnable {
Thread gridthread;
public CheckGrid(){}
public void start(ThreadGroup group,String name)
{
gridthread = new Thread(group,this,name);
gridthread.start();
}
public void run()
{
int j=0;
while (j<4)
{
int i = 0;
...........其他操作................
String[] data = new String[5];
data[0]= Integer.toString(i);
data[1]= data[0];
data[2]= "999999";
data[3]= "false";
data[4]= "false";
synchronized(this){
i = searchGrid.getRowCount() - irowcount;
searchGrid.addRow(data);
}
irow = add();
...........其他操作................
searchGrid.set(1,irow,Integer.toString(irow));
...........其他操作................
j = j+1;
}
}
}
}