①写法一
1.创建一个继承Thread类的子类
2.重写Thread类的run( )方法
3.在run( )方法中写上你想让该线程执行的操作
4.创建Thread类的子类的对象
5.通过此类对象调用start( )方法。
//方式一// 1.创建一个继承与Thread类的子类classMyThreadextendsThread{//2.重写Thread类的run()@Overridepublicvoidrun(){//3.在run( )方法中写上你想让该线程执行的操作,此处写的是输出100以内的偶数for(inti=2;i<=100;i++){if(i%2==0){System.out.println(i);}}}}publicclassThreadTest{publicstaticvoidmain(String[]args){//4.创建Thread类的子类的对象MyThreadt1=newMyThread();//5.通过此类对象调用start()t1.start();}}
②写法二
1.创建一个继承Thread类的子类
2.重写Thread类的run( )方法
3.在run( )方法中写上你想让该线程执行的操作
4.创建匿名对象调用start( )方法
//方式二// 1.创建一个继承与Thread类的子类classMyThreadextendsThread{//2.重写Thread类的run()@Overridepublicvoidrun(){//3.在run( )方法中写上你想让该线程执行的操作,此处写的是输出100以内的偶数for(inti=2;i<=100;i++){if(i%2==0){System.out.println(i);}}}}publicclassThreadTest{publicstaticvoidmain(String[]args){//4.创建匿名对象调用start( )方法newMyThread().start();}}
③写法三
1.创建Thread类的匿名子类
//方式三:创建Thread类的匿名子类publicclassThreadTest{publicstaticvoidmain(String[]args){//1.创建一个ThreadnewThread(){//2.在花括号内直接重写Thread的run方法@Overridepublicvoidrun(){for(inti=2;i<=100;i+=2){System.out.println(i);}}}.start();//调用start()}}
2.方式二:实现Runnable接口
1.创建一个实现了Runnable接口的类
2.通过该类去实现Runnable中的抽象方法run()
3.在run( )方法中写上你想让该线程执行的操作
4.创建实现类的对象
5.将此对象作为参数传递到Thread类的构造器中,创建Tread类的对象
6.通过Thread类的对象调用start()方法
//1.创建一个实现了Runnable接口的类classMyThreadimplementsRunnable{//2..通过该类去实现Runnable中的抽象方法run()@Overridepublicvoidrun(){//3.在run( )方法中写上你想让该线程执行的操作for(inti=2;i<100;i++){if(i%2==0){System.out.println(i);}}}}publicclassThreadTest{publicstaticvoidmain(String[]args){// 4.创建实现类的对象MyThreadmyThread=newMyThread();// 5.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象Threadt1=newThread(myThread);// 6.通过Thread类的对象调用start()t1.start();}}
3.Thread和Runnable两种创建线程方式的比较
①开发中应该选择哪种创建线程的方式
在开发中优先选择通过实现Runnable接口的方式来创建线程。
原因:
①实现Runnable接口的方式没有类的单继承性的局限性。而通过继承Thread类来创建线程后无法再继承其他类,有局限性。
②实现Runnable接口的方式更适合用来处理多个线程之间数据共享的情况。
②Thread和Runnable两者之间的关系
Thread类是继承Runnable接口的。
//Thread类的声明publicclassThreadimplementsRunnable
③Thread和Runnable两者的共同点
两种创建线程的方式都需要重写run()方法,将线程要执行的代码声明在run()中。
叫法上的细微区别
通过Thread创建线程一般叫重写run()方法。
通过Runnable创建线程一般叫实现run()方法,因为Runnable中的run()方法是抽象方法。
最近整理了java架构文档和学习笔记文件以及架构视频资料和高清架构进阶学习导图免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习,也可以关注我一下以后会有更多干货分享。
添加小助手VX:xuanwo008 备注好“简书”信息即可领取资料!