实现多线程的两种方法:
- 自己编写一个类,继承Thread类
在Thread类中构造方法
[qzdypre]
public Arithmetic(String name) {
super(name);
}
[/qzdypre]
通过调用Thread类中的setName()方法,可以为线程设置一个唯一的名称,方便在多线程环境下进行识别和调试。此方法继承自Thread类的父类Object类,因此可以在任何继承自Object类的类中使用。需要注意的是,线程名称应该具有描述性,并且不应该与其他线程的名称相同,以避免混淆。
相关实例代码Arithmetic.java
[qzdypre]
public class Arithmetic extends Thread{
public Arithmetic(String name) {
super(name);
}
public void run(){
for(int i=1;i<=10;i++){
System.out.println(Thread.currentThread().getId()+","+ currentThread().getName()+":"+ i);
}
}
}
class Test{
public static void main(String[] args) {
Arithmetic thread1=new Arithmetic("run线程");
thread1.start();//就会启动一个独立的线程,并且在该线程内执行run()方法
for(int j=-1;j>=-10;j--){
System.out.println(Thread.currentThread().getId()+","+ thread1.getName()+":"+j);
}
}
}
[/qzdypre]
实例中的第17行为线程指定名称。
使用构造方法可以在创建线程时指定线程名称,例如:
Thread myThread = new Thread("myThread");
myThread.start();
需要注意的是,主线程的线程名为main,无法修改。
2.自己编写一个类,实现Runnable接口
除了继承Thread类,还可以通过实现Runnable接口来实现多线程。实现Runnable接口需要实现run()方法,而Thread类本身就已经实现了run()方法。因此,实现Runnable接口更加灵活,可以避免单继承的限制。要注意的run()方法是没有返回值的
在Java中,如果一个方法没有返回值,那么它的返回类型应该是void。在run()方法中,它是一个没有参数和返回值的抽象方法,这意味着它只是执行一些操作而不返回任何值。因此,在实现Runnable接口时,我们需要在run()方法中编写需要执行的代码,但是我们不能期望从run()方法中获得任何返回值。所以,如果你需要从多线程中获取某些数据或状态,你需要使用其他的机制来实现。
文章评论