public synchronized void run()....

解决方案 »

  1.   

    synchronized(found_hole){
      //你的代码
    }
      

  2.   

    需要澄清一点的是你定义的found_hole并不是全局变量(JAVA里没全局变量,类变量或实例变量);你要是想安全的对线程里的类变量进行操作,可以考虑使用getVar()和setVar()方法,操作时分别对两个方法进行同步(synchronized)。
      

  3.   

    同意楼上的观点,补充一点,注意不要随便的终止一个进程,要设置比如boolean isStoping;这样的变量,在适当的时候使它成为true,然后让进程在执行的时候进行检测,在决定终止,这样才是安全的办法.
      

  4.   

    Java里面有类变量,做法是在类成员前面加上static关键字,如果想做到多线程安全性,可以做一个类锁譬如
    public class Test
    {
        public static byte [] array={...};
        public static Object lock;    public void operate()
       {
           synchronized(lock)
           {
                具体的操作//该类的多个实例共享同一个变量,共享同一个锁
           }
       }
    }
      

  5.   

    情况是这样的,我直接在一个JSP页面里定义的全局变量,是这样写的:
    <%@ page import="java.util.*,java.sql.*,java.io.*,java.text.DateFormat,java.util.Date,javax.servlet.http.*,javax.servlet.*"%>
    <%!
    int[] hole_num=new int[10];
    int[][] found_hole=new int[10][2];
    public class test extends Thread{
      public void run(){
        ......
        found_hole[com_order][0]=0;
        found_hole[com_order][1]=count;
        ......
      }}
    在这里面就可以直接用到它
      

  6.   

    不懂你整public class test extends Thread{干啥用,还要同步,同步什么呀,你那个数组根本就不是static的,怎么同步.上面回答同步的兄弟们,你们知道怎么才能够同步?