Java创建线程的两种方式
前言
多线程是我们开发过程中经常遇到的,也是必不可少需要掌握的。当我们知道需要进行多线程开发时首先需要知道的自然是如何实现多线程,也就是我们应该如何创建线程。
在Java中创建线程和创建普通的类的对象操作是一样的,我们可以通过两种方式来创建线程:
1、继承Thread类,并重写run()方法。
2、实现Runnable接口,并实现run()方法。
方法一:继承Thread类
代码非常简单
首先重载一个构造函数,以便我们可以给线程命名。
重写run()方法。
这里我们先让线程输出线程名+start。
然后每5ms输出线程名+一个递增数。
/** * Created by holten.gao on 2016/10/17. */ public class threadThread extends Thread { public threadThread(String name) { super(name); } @Override public void run() { System.out.println(this.getName()+" start!"); for(int i=0;i<10;i++){ System.out.println(this.getName()+" "+i); try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } } }
方法二:实现Runnable接口
代码也非常简单
实现run()方法。
这里我们先让线程输出线程名+start。
然后每5ms输出线程名+一个递增数。
/** * Created by holten.gao on 2016/10/17. */ public class runnableThread implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()+" start!"); for(int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+" "+i); try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } } }
测试结果
测试代码
/** * Created by holten.gao on 2016/10/17. */ public class Main { public static void main(String[] args) { Thread threadThread=new threadThread("threadThread"); threadThread.start(); Thread runnableThread=new Thread(new runnableThread(),"runnableThread"); runnableThread.start(); } }
测试结果
threadThread start! threadThread 0 runnableThread start! runnableThread 0 threadThread 1 runnableThread 1 threadThread 2 runnableThread 2 threadThread 3 runnableThread 3 threadThread 4 runnableThread 4 threadThread 5 runnableThread 5 threadThread 6 runnableThread 6 threadThread 7 runnableThread 7 threadThread 8 runnableThread 8 threadThread 9 runnableThread 9
两种方法比较
1.因为Java只支持单继承,所以使用方法一就不能再继承其他类了;而方法二实现接口则不会影响继承其他类。
2.方法一由于是继承Thread,所以直接new出来就可以start;而方法二需要将对象作为参数传入Thread对象才能得到Thread对象。
3.方法一中可以直接通过this.getName获得线程名;而方法二需要Thread.currentThread().getName()获得
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
使用Postman传递arraylist数据给springboot方式
这篇文章主要介绍了使用Postman传递arraylist数据给springboot方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-12-12SpringCloud服务接口调用OpenFeign及使用详解
这篇文章主要介绍了SpringCloud服务接口调用——OpenFeign,在学习Ribbon时,服务间调用使用的是RestTemplate+Ribbon实现,而Feign在此基础上继续进行了封装,使服务间调用变得更加方便,需要的朋友可以参考下2023-04-04IDEA 2020.1 版自动导入MAVEN依赖的方法(新版MAVEN无法自动导入/更新POM依赖、MAVEN设置自动更
这篇文章主要介绍了IDEA 2020.1 版自动导入MAVEN依赖的方法(新版MAVEN无法自动导入/更新POM依赖、MAVEN设置自动更新、自动更新快捷键),需要的朋友可以参考下2020-08-08
最新评论