java的多线程同步无法正常,求教高手!!!

anywhere 2001-07-01 11:03:26

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;

}
}
}

}
...全文
40 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧