Java 如何区分两个线程
我的程序中有以下代码:Java 如何区分两个线程,java,multithreading,Java,Multithreading,我的程序中有以下代码: Thread getUsersist, getChatUsers; getUsersList = new Thread(this, "getOnlineUsers"); getUsersList.start(); getChatUsers = new Thread(this, "getChatUsers"); getChatUsers.start(); 在run中,我想知道哪个线程正在使用run。如果是getOnlineUsers,我会做一些事情,如果是getChat
Thread getUsersist, getChatUsers;
getUsersList = new Thread(this, "getOnlineUsers");
getUsersList.start();
getChatUsers = new Thread(this, "getChatUsers");
getChatUsers.start();
在run中,我想知道哪个线程正在使用run。如果是getOnlineUsers,我会做一些事情,如果是getChatUsers,我会做其他事情。那么我如何知道哪个线程正在使用run呢?在run中,您可以执行以下操作:
Thread.currentThread().getName()
获取getOnlineUsers或getChatUsers并相应地采用不同的代码路径。这就是说,对我来说,这似乎是一个相当脆弱的设计,我想如果每个线程都有单独的类,情况会好得多
if (getName().equals("getOnlineUsers")) {
doOneThing();
else if (getName().equals("getChatUsers")) {
doAnotherThing();
} else {
throw Up();
}
编辑:忽略此答案。阅读已接受的答案。使用run是什么意思?你是说,哪个线程当前正在运行?是的。当我说*.start时,它叫run,不是吗。所以在运行中,我想知道哪个线程调用了它。您不需要thread.currentThread。run是Thread类后代的一个方法。+1表示这种方法是粗略的,应该考虑更好的替代方法。@Marcelo:但Runnable的run方法不是。+1:每个线程有单独的类:或者至少是Runnable上的一个属性。是的,我正在实现Runnable。这个方法很有效,不像Marcelo的,虽然我不明白为什么。但是他的代码示例中的这个是可运行的,而不是线程。getName不可用。我尝试了这个,但只是简单地执行System.out.printlngetName会给我一些其他线程名称,而不是我需要的GetOnlineUsers、getChatUSers。