zoukankan      html  css  js  c++  java
  • 多线程的两种启动方式的简单总结

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

     

    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接口的方式

  • 相关阅读:
    微信jssdk录音功能开发记录
    前端自动化 模块化开发
    git常用命令
    RESTful
    web前端和SEO优化
    论get和post的区别。。
    Mac 用pecl安装PHP扩展失败
    git
    fullPage.js 的使用
    正则表达式
  • 原文地址:https://www.cnblogs.com/yyldh/p/14472640.html
Copyright © 2011-2022 走看看