我目前正在玩一个echo服务器和echo客户端,这是我的讲师从根本上提供的。每个客户端连接到一个套接字线程,该线程由EchoServer类中的start()启动。无论如何,我把线放在" System.out.println(this);"在服务器类的循环中。 值得庆幸的是,这给出了输出" Thread [Thread-0,5,main]"," Thread [Thread-1,5,main]",具体取决于它是哪个线程,分别是第一个或第二个。我希望能够说:
if (this == "Thread[Thread-1,5,main]"){
do so and so
}else{
do so and so
}
然而"线程[Thread-1,5,main]"不是字符串所以有没有办法可以将当前线程称为字符串,或者我如何引用它或转换它?
也很抱歉没有分享代码我只是不确定它是否合法,因为它属于我的讲师。
答案 0 :(得分:0)
我认为您可能正在寻找Thread#getName
和Thread#setName
。
然而,正如hexafraction所指出的,如果您有对线程的引用,只需直接进行比较:
Thread t1 = new Thread(/*...*/);
Thread t2 = new Thread(/*...*/);
// ...later...
if (Thread.currentThread() == t1) {
// It's t1
}
Thread.currentThread
返回对当前正在执行的线程的引用。