在线程之间共享对象
问题描述:
在我的程序中,我喜欢创建一个对象,然后将它传递给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
答
多线程的基本: 如果胎面有一个对象,将“锁定”该对象,把数据对象或服用除非对象被写回内存或磁盘,否则它不会改变任何内容。
在您的代码示例中,没有等待CS_UDP完成写入列表,因此当CD_TCP开始读取时,列表仍将为空。
希望这有助于!
您可以通过在线程中使用同步来实现它..只需通过多线程.. – Shriram 2014-10-08 09:37:53
您可以在此更新您的代码吗?从描述中我们怎么能告诉你你错在哪里。 – 2014-10-08 09:37:55
您必须使用wait()和notify()方法...在两个线程之间进行通信。 – 2014-10-08 09:40:39