java - 尝试弄清楚如何使用 Runnable 线程类将参数传递给线程

标签 java multithreading

我正在尝试创建我的第一个服务器,一个简单的聊天服务器。

我有一个名为 cCleanThreadRunnable 类,它创建一个使用 sleep 来调用的线程 cGlobals.mUserList.Clean(); 每 10 秒一次。

我希望拥有它,以便 cCleanThread 的每个实例都有自己的 mUserList 对象。我想不出一个简单的方法来做到这一点。

我想当我创建 cCleanThread 对象时,我该如何传递 mUserList 的参数?

代码

public class cCleanThread   implements Runnable {

Thread runner;
public cCleanThread() {
}

public cCleanThread(String threadName) {
    runner = new Thread(this, threadName); // (1) Create a new thread.
    System.out.println(runner.getName());
    runner.start(); // (2) Start the thread.
}

public void run() {
    //Display info about this particular thread
    System.out.println(Thread.currentThread());
     while(true)
     {

         try {
            Thread.sleep(20*1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         cGlobals.mUserList.Clean(); 
     }
}
}

最佳答案

这不是一个答案。这更像是一种改进。

如果你想每10秒运行一次干净,你可以使用 Timer类(class)。这是example 。该线程会自动为您完成。

关于java - 尝试弄清楚如何使用 Runnable 线程类将参数传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8299814/

相关文章:

c# - Azure Functions 使用带有 Http 触发器的取消 token

java - 创建一个逐步更新 JPanel 的 ActionListener

Java接口(interface)查询

java - Android-Studio 报告自动装箱错误,但仍然可以编译

java - 迭代字符串以验证它是否是二进制数

vb.net - 在 Visual Basic (VS 2012 V11) 中进行跨线程时正确更新文本框

c - 如何使 pthreads 池运行任意例程

java - 使用简单的自定义日志记录框架通过线程将消息记录到 JavaFX TextArea 的最有效方式

java - while 循环不适用于两个 if 语句

c# - 为什么 readonly 和 volatile 修饰符是互斥的?