首页 > 编程语言 > 详细

多线程的两种启动方式的简单总结

时间:2019-10-14 23:05:12      阅读:95      评论:0      收藏:0      [点我收藏+]

1. 继承Thread类,重写run方法,new出对象.start()即可。

public class Thread3 extends Thread{
  @Override
  public void run() {
   for (int i = 0; i < 20; i++) {
    System.out.println(this.getName()+":"+i+"这是线程"); 
   }
  }
}
2. 实现Runnable接口,实现run方法,把实现类的对象obj传给new Thread(obj),再用Thread 类的对象.start()方法来启动线程。

public class Thread2 implements Runnable {
 @Override
 public void run() {
  for (int i = 0; i < 20; i++) {
   String name = Thread.currentThread().getName();
   System.out.println(name+":"+i);
  }
  
 }
}
 
//测试类
public class testThread {
 public static void main(String[] args) {
  Thread2 thread2 = new Thread2();
  Thread thread = new Thread(thread2);
  thread.start();
 
  Thread3 thread3 = new Thread3();
   thread3.start();
 
  }
}
 
 

 

 注意:不能直接调用run方法,启动线程必须使用start()方法,直接调用run方法是相当于直接调用普通方法
       直接继承Thread的可以用(Thread.currentThread()获取当前运行的线程)或this.getName()/setName()方法来得到或者赋予一个线程名字。
       实现runnable接口的用Thread.currentThread()获取当前运行的线程或Thread.currentThread().getName()/setName()方法来得到或者赋予一个线程名字。这里没有this。
 区别:实现Runnable接口有何优点?
         1. 解决了单继承的问题,一个类只能继承一个类,类继承了Thread类之后就不能再继承其他类了。实现Runnable接口,还可以继承其他类,实现其他接口。
         2. 增强了程序的扩展性,降低了程序的耦合性(解耦)
             实现Runnable接口的方式,把设置线程任务和开启线程进行了分离(解耦)。实现类中,重写了run方法,用来设置线程任务,创建Thread类的对象,调用start方法,用来开启新线程。
         3.建议以后使用中用实现Runnable接口的方式

多线程的两种启动方式的简单总结

原文:https://www.cnblogs.com/newbie273/p/11674192.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!