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

时间:2011-11-28 17:29:53

标签: java multithreading

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

我有一个名为Runnable的{​​{1}}类,它创建一个使用sleep来调用的线程  每隔10秒c cCleanThread

我想拥有它,因此Globals.mUserList.Clean();的每个实例都有自己的cCleanThread对象。我无法想出一个简单的方法来做到这一点。

我想我会在创建mUserList对象时如何传递mUserList的参数?

cCleanThread

4 个答案:

答案 0 :(得分:2)

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

如果您希望每10秒运行一次,则可以使用Timer类。这是example。线程是自动完成的。

答案 1 :(得分:1)

mUserList类中添加cCleanThread作为实例变量,并在构造函数中初始化它。由于每个线程对应一个cCleanThread实例的实例,因此每个线程只有一个mUserListmUserList方法可以访问此run()个实例,因为它们都属于同一个类。

答案 2 :(得分:1)

mUserList传递给线程构造函数:

public class cCleanThread implements Runnable {

    private final UserList localUserList;

    public cCleanThread(String threadName, UserList mUserList) {
        this.localUserList = mUserList;
        //...
    }

    public void run() {
        //...
        localUserList.Clean(); 
    }
}

使用不同的参数简单地创建线程:

Thread first  = new cCleanThread("Thread-Foo", fooUsers);
Thread second = new cCleanThread("Thread-Bar", barUsers);

答案 3 :(得分:0)