Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 线程间共享对象_Java_Multithreading_Object_Sharing - Fatal编程技术网

Java 线程间共享对象

Java 线程间共享对象,java,multithreading,object,sharing,Java,Multithreading,Object,Sharing,在我的程序中,我喜欢创建一个对象,然后将其传递给两个不同的线程,其中一个线程应该更新对象的值,另一个线程应该使用该值。但是当线程尝试使用这些值时,我得到的错误是对象没有任何值。我如何解决这个问题 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, l

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

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存储可用存储服务器的列表

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

CS_UDP使用UDP进行通信,并将可用文件列表和IP返回给存储服务器


CD_TCP使用TCP进行通信,并实现文件列表中的文件

多线程的基础: 如果踏板有一个对象,它将锁定该对象,将数据放入或取出该对象不会改变任何东西,除非该对象被写回内存或磁盘

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


希望这有帮助

您可以通过在线程中使用同步来实现。。只需通过多线程..你能在这里更新你的代码吗?从刚才的描述中,我们如何才能告诉您错误的确切位置。您必须使用等待和通知方法。。。在两个线程之间通信。。