• springboot中类成员生成位置的疑问


    在idea中将一个旧项目改造为springboot框架,发现一个非常奇怪的现象。原项目为桌面项目,用的JDK为是jdk 1.4,在去掉界面后,将其做为一个线程加入到系统中。其主类代码如下:

    @SpringBootApplication
    public class SrtiApplication {
       Runnable runner = new Runnable(){ 

        @Override
        public void run() {
          // TODO Auto-generated method stub
            Transport.main(null);//旧的主程序在这里启动
          }

        };

        Thread mt = new Thread(runner);

        mt.start();

    public static void main(String[] args) {
            SpringApplication.run(SrtiApplication.class, args);
        }
    
    }

    Transport类中,有一个Vector类成员_fedtable。另一个线程给_fedtable添加数据,而主线程中提取并处理数据。

    public class Transport{
    
        Vector _fedtable = new FederateTable();
        ''''''
        void main(String[] args){
            Message mes = callbackQueue.dequeue();
            mes.dispatch();  
        }
    
        private class Message{
                int val;
                public Message(int value){
                    val = value;
                 }
                 public dispatch(){
                    for(int i =0 ; _fedtable.size(); i++){
                        ....}
      }        

    发现这里size总为0,后来将_fedtable = new FederateTable();放到构造函数中,发现其不再为0

    分析原因,很难说不是IDEA的一个BUG。得到的教训是,线程中的实例的成员变量应当在其构造函数中初始化。

     
  • 相关阅读:
    重定向输出流实现程序日志
    为新员工分配部门
    从控制台接收输入的身份证号
    判断某一年是否为闰年
    linux重置mysql密码(root权限)
    mysql按照字符串类型的数值按数值进行排序
    android 下拉刷新
    android studio gradle 配置
    搭建自己的iOS内测分发平台
    http_range说明
  • 原文地址:https://www.cnblogs.com/myboat/p/13036146.html
Copyright © 2020-2023  润新知