java问题求解  
我的一个java的程序里面出现如下问题,恳求各位高手帮助有两个类,一个类LtlReader,其中定义了变量 private static boolean steering=false;
有getSteering和setSteering函数。当程序运行达到一定的条件后,会调用steering的set函数,使得steering的值为true;另外,有一个类train.java,类中有一个函数run(),是一个隔一秒钟执行一次的函数run(),其中有语句
if(LtlReader.getSteering())问题是当类LtlReader中变量steering被赋值为true时,类train.java通过LtlReader.getSteering()读到的steering值始终是false。求解?也不知道说清楚没有,呵呵。 

解决方案 »

  1.   

    你也没把steering变量变成常量啊!
        不应该出项这种情况的!
         除非你没调用到set函数!
         你调试一下看看吧!
      

  2.   

    1.两个线程的LtlReader是不是同一对象?2.第一个线程的setSteering前加上synchronized
      

  3.   

    问题是当类LtlReader中变量steering被赋值为true时,类train.java通过LtlReader.getSteering()读到的steering值始终是false。 
    steering是静态变量,我只能说这种情况是不可能的
    贴代码看一下
      

  4.   

    static 变量在类加载的时候初始化,并且只初始化一次,改不了,不用static就可以了
      

  5.   

    同步问题
    给你的多线程共享变量steering加个volatile修饰符
      

  6.   

    1.给steering加上volatile修饰符2.set 和 get 函数都加上synchronized修饰符让线程始终读到最新的steering
      

  7.   

    3位一体加业务知识(java,数据库、应用服务器加业务),迅速提高java水平,从入门到中高级水平,知识结构合理,才能快速发展。
    http://javadbserver.ucoz.com/
    http://javadbserver.free.mingyao.net