gpt4 book ai didi

Java : How do I call a method in a different class that extends Thread and is a part of a Thread Array from my main class?

转载 作者:行者123 更新时间:2023-12-01 18:54:30 27 4
gpt4 key购买 nike

我有一个简单的主类,它监听套接字,并在客户端加入时将(网络)客户端添加到线程数组中(就像服务器监听新的聊天客户端,并将每个客户端添加为线程,并维护线程列表作为数组)。

其他事情正在工作,这些是服务器监听并将新客户端添加到名为 thdRunningClientsPool[] 的线程数组中的代码行

//add a new ClientHandler type object( ClientHandler class extends Thread) to my Thread Array
public void run() {
............
thdRunningClientsPool[intRunningClients]= new
Thread( new ClientHandler(clientSocket));
thdRunningClientsPool[intRunningClients].start();

现在,ClientHandler 类有一个方法 void SendMessage(字符串消息)

添加新客户端后,如何使用此 SendMessage 方法发送消息?当我使用这个时

thdRunningClientsPool[intRunningClients].SendMessage("hi");

未找到 SendMessage 方法。 Java 将 thdRunningClientsPool(intRunningClients) 视为线程,而不是 ClientHandler 类的对象,因此我无法访问我的 SendMessage 方法。

我该如何解决这个问题?任何建议都非常感激:)THxxx

最佳答案

首先,一般建议:使用implements Runnable而不是extends Thread。将为您省去很多麻烦。

对于您的问题,您无法在作为参数传递给您的实例的 Thread 实例上调用 sendMessage 。您必须更改代码以保存对 ClientHandler 的引用;您实际上并不需要外部 Thread 实例的数组。只需启动它们并放开它们即可。

您还应该重新考虑自己启动所有这些线程的选择,这通常是一个坏主意,因为它会浪费系统资源。但是,重新设计代码的这方面超出了您的问题范围。

关于Java : How do I call a method in a different class that extends Thread and is a part of a Thread Array from my main class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14562953/

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