service96 2016-03-02 10:35 采纳率: 0%
浏览 1326

Java写交易客户端(多线程、对象数据传送等简单问题)

有如下几个类:

1、Ticker类
//此Ticker为简单java类,其属性与服务器传来的json字段对应,通过Decoder类反系列化json
//反系列化以后的数据,用以做逻辑判断,符合逻辑,则向服务器发出某种请求

public class Ticker implements Serializable {
private static final long serialVersionUID = 2015022601L;
private volatile Double buy;
private volatile Double contractId;

public void setBuy(Double buy) {
    this.buy = buy;
}

public void setContractId(Double contractId) {
    this.contractId = contractId;
}

}

public Double getBuy() {
    return buy;
}

public BigDecimal getContractId() {
    return contractId;
}

public Ticker() {
    super();
}

public Ticker( Double buy, Double contractId) {
    this.buy = buy;
    this.contractId = contractId;

}

}

2、Decoder类
//此类接收服务器传来的json(msg字符串),采用Gson将其反系列化
//此msg消息一直不断推送过来,比如第一次推送{buy:100,contractId:20},下一次可能是{buy:50,contractId:305}

public class Decoder implements Abc{
@Override
public void onReceive(String msg){
System.out.println(msg);

       if (msg.contains("ticker")) {
          Gson gson=new Gson();
          Ticker ticker=gson.fromJson(msg, Ticker.class);  //反系列化后得到的数据存于ticker对象
       }

}

}

3、Test类
//此类利用反系列化后的数据进行判断,然后向服务器发出某些请求

public class Test{
此类里需要用到Decoder里得到的ticker对象的buy及contractId属性值,
比如此类一直在做以下判断
if (buy>contractId){
向服务器发出一次请求
}

问题:
(1),Test类怎么才能得到Decoder类里实例化的ticker对象的属性值(buy,contractId),是在Ticker加上一个构造方法?还是在Decoder类里写一个方法?或者其他?请给出实际代码。
(付:这是一个线程间通讯的问题么?)

(2),Decoder类一直每秒几次的转换服务器推送来的json,每一次得到的ticker对象地址不一样,其ticker只有最近一个的属性有用,这样是不是产生了大量的垃圾,还是说虽然地址不一样,但后产生的ticker自动覆盖了前面的ticker对象?

(3),如果此程序采用多线程,同时还使用SWT写了一个UI类,是否要再写一个类用来更新ticker对象的属性到UI界面上(或者采用Eclipse数据绑定的办法)?
     现在相当于:
               Decoder类一直不断在进行json转换,
               UI类一直在把ticker对象的属性数据更新到UI界面(或者用其他办法更新上去),
               Test类也一直在使用ticker的属性值进行数据的逻辑判断,
               此程序是否应该是至少三个线程?那具体怎么实现多线程(每个类都实现Runnable接口?)?主方法是该放在UI类里,还是放在客服端里(Test类是否可作为客服端)?
               请请给出具体多线程实现的代码?

(4)如果Test类用于逻辑判断的属性值buy和contractId不采用Decoder类里产生的,而是去UI界面上再次取得,那这个取得过程是否与(2)问的解决办法一样?

真心求教,成功发财了发个大红包!
  • 写回答

1条回答

  • devmiao 2016-03-02 11:30
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?