【问题标题】:Sharing object between threads线程间共享对象
【发布时间】:2014-10-08 09:36:50
【问题描述】:

在我的程序中,我喜欢创建一个对象,然后将其传递给 2 个不同的线程,其中 1 个应该更新对象的值,另一个线程应该使用该值。但是当线程尝试使用这些值时,我得到对象没有任何值的错误。我该如何解决这个问题?

SS_list list = new SS_list();
Files_list lof = new Files_list();

CS_UDP udp =  new CS_UDP(cs_port, list, lof);
CD_TCP tcp = new CS_TCP(cs_port, list, lof);

SS_list 存储可用的存储服务器列表;

Files_list 存储存储服务器中可用的文件列表;

CS_UDP 在 udp 中进行通信,并向用户返回可用文件列表和存储服务器的 IP;

CD_TCP 在 tcp 中进行通信并实现 Files_list 中的文件

【问题讨论】:

  • 你可以通过在线程中使用同步来实现它..只需通过多线程..
  • 你能在这里更新你的代码吗?仅从描述中,我们如何才能告诉您您到底在哪里犯了错误。
  • 你必须使用 wait() 和 notify() 方法...在两个线程之间进行通信..

标签: java multithreading object sharing


【解决方案1】:

多线程的基础: 如果胎面有一个对象,它将“锁定”该对象,将数据放入对象或将其取出不会改变任何内容,除非该对象被写回内存或磁盘。

在您的代码示例中,无需等待 CS_UDP 完成对列表的写入,因此当 CD_TCP 开始读取时,列表仍然为空。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多