我正在尝试创建我的第一台服务器,一个简单的聊天服务器。
我有一个名为Runnable
的{{1}}类,它创建一个使用sleep来调用的线程
每隔10秒c cCleanThread
。
我想拥有它,因此Globals.mUserList.Clean();
的每个实例都有自己的cCleanThread
对象。我无法想出一个简单的方法来做到这一点。
我想我会在创建mUserList
对象时如何传递mUserList
的参数?
码
cCleanThread
答案 0 :(得分:2)
答案 1 :(得分:1)
在mUserList
类中添加cCleanThread
作为实例变量,并在构造函数中初始化它。由于每个线程对应一个cCleanThread
实例的实例,因此每个线程只有一个mUserList
。 mUserList
方法可以访问此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)
看一下SceduledExecutorService:http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html#scheduleAtFixedRate(java.lang.Runnable,long,long,java.util.concurrent.TimeUnit)
进一步了解新的Threadsafe-Collections: http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/LinkedBlockingDeque.html