gpt4 book ai didi

java - Java线程内部线程之间的通信

转载 作者:行者123 更新时间:2023-11-29 08:01:03 25 4
gpt4 key购买 nike

我不知道如何解决这个问题,希望你能帮助我。

在服务器端我有这个:

class Baza0 implements Runnable{  

anotherclass arraylist_handle = new anotherclass();

public method1(string s1){uses methods figured in arraylist_handle)

public run(){
while(true){
Socket s = s.accept();
if(s==NULL) continue;

//there I'm starting another thread that handles client connection
}
}
public static void main(){
Baza0 baza0 = new Baza0();
Thread t = new Thread(baza0);
}
}

已连接的客户端通过套接字服务器功能将字符串发送到客户端处理程序。如何将此字符串作为参数从客户端处理程序发送到 method1?它必须使用唯一的一个 Baza0 对象,因为 ArrayList 必须对所有客户端都是通用的。

编辑

有人能告诉我为什么像 Baza0.baza0.method1() 这样的东西不起作用吗?

编辑2

看看我做了什么!

我在 Class Baza0 中创建了一个静态变量:

static Baza0 baza1;

在 main 方法中我启动了一个 Baza0 对象:

Baza0 baza0 = new Baza0();

在此之后运行使 baza1 = baza0 的方法。

现在我可以通过以下方式从客户端处理程序访问方法:

Baza0.baza1.method1(param);

它确实有效! :D ...不知道为什么。

最佳答案

  1. 如果您仅将 arraylist 用于读取,那么所有子线程都可以自由地并发访问它;
  2. 如果线程要修改列表,则列表必须是线程安全的;
  3. 如果修改涉及许多步骤(读取和写入),则您必须使用同步 block ,在其中发生与列表的“事务”。

关于java - Java线程内部线程之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14416152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com