gpt4 book ai didi

java - 用Java编写线程

转载 作者:行者123 更新时间:2023-12-01 22:25:24 25 4
gpt4 key购买 nike

用 Java 编写线程时(例如用 Java 处理不同的客户端):

1)通过扩展Thread类来做到这一点的原因是什么,或者通过实现 Runnable 接口(interface)?

2) 如何为新创建的线程命名以便在程序中访问它?

3)如何避免某些线程同名的情况?

最佳答案

关于 1) 的一些话:

实现 Runnable 使您的类更加灵活。

实现 Runnable 的类不是线程,而只是一个类。为了使 Runnable 成为线程,您需要创建一个 Thread 实例并将其自身作为目标传递。

通过扩展Thread,每个线程都有一个与之关联的唯一对象,而实现Runnable,许多线程可以共享相同的可运行实例。

在大多数情况下,如果您只计划重写 run() 方法而不重写其他 Thread 方法,则应使用 Runnable 接口(interface)。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应该对类进行子类化。

大约2)

下面的线程名称是[myThread]

Thread myThread =new  Thread(new Runnable(){
public void run(){

//code

}});

myThread.start(); //start it

关于3)

关于名称...如果您不想像上面的示例那样通过名称访问线程,您可以只创建一个线程,然后在其中添加具有您想要的行为的代码。例如,您可以有一个 标志 并将其设置为 false,线程就完成了它的工作,线程就完成了。

 new Thread(new Runnable(){
public void run(){

//example code
while(flag==true){
System.out.println("Yeah i am true ");
//Thread.sleep(200); //Makes The Thread sleep
}

}}).start(); //create and start by default

这里

public class Server{

public Server(){ //constructor

Thread client = ClientMethod("Alex");
System.out.println("i am Client "+client.getName());
}


//Make a Thread for a specific Client
public Thread ClientMethod(String clientName){

Thread client = new Thread(new Runnable(){
public void run(){

//do someWork
//Then finish

}//end of run method
});

client.setName(clientName); //set the NameOfThread to clientName
client.start(); //start it

return client; //return the Thread of this specific Client(as Object)

}


//Main Method
public static void main(String[] args){
new Server();
}

}//End of Class [Server]

关于java - 用Java编写线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28901266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com