2014-10-08 204 views
-3

在我的程序中,我喜欢创建一个对象,然后将它传递给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和actualizes文件中Files_list

+0

您可以通过在线程中使用同步来实现它..只需通过多线程.. – Shriram 2014-10-08 09:37:53

+0

您可以在此更新您的代码吗?从描述中我们怎么能告诉你你错在哪里。 – 2014-10-08 09:37:55

+0

您必须使用wait()和notify()方法...在两个线程之间进行通信。 – 2014-10-08 09:40:39

回答

0

多线程的基本: 如果胎面有一个对象,将“锁定”该对象,把数据对象或服用除非对象被写回内存或磁盘,否则它不会改变任何内容。

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

希望这有助于!