java--(多线程创建的两种方式Thread类和Runnable接口)

标签: Thread类和Runnable接口
13人阅读 评论(0) 收藏 举报
分类:
(一)继承Thread类创建多线程----单线程

下面的代码是一个死循环,但是不会执行main里面的循环语句,而是run()里面的语句,这是因为该程序是一个单线程程序,当调用MyThread类的run()方法时,遇到死循环,循环一直进行。因此,MyThread类的打印语句将永远执行,而main()方法中的打印语句无法得到执行。

[html] view plain copy
  1. package test;  
  2.   
  3. public class example {  
  4.       public static void main(String[] args){  
  5.           MyThread myThread=new MyThread();  
  6.           myThread.run();  
  7.           while(true)  
  8.           {  
  9.               System.out.println("Main方法在运行");  
  10.           }  
  11.       }  
  12. }  
  13.   
  14. class MyThread{  
  15.     public void run(){  
  16.         while(true){  
  17.             System.out.println("MyThread类的run()方法在运行");  
  18.         }  
  19.     }  
  20. }  

(二)通过继承Thread类实现多线程:
如果希望(一)中的两个循环打印语句都能够执行的话,那么就需要实现多线程。为此jdk提供了一个多线程类Thread,通过继承Thread类,并重写Thread类中的run()方法便可以实现多线程。在Thread类中,提供了一个start()方法用于启动新线程,线程启动后,系统就会自动调用run()方法。

[html] view plain copy
  1. package test;  
  2.   
  3. public class example {  
  4.       public static void main(String[] args){  
  5.           MyThread myThread=new MyThread();  
  6.           myThread.start();  
  7.           while(true)  
  8.           {  
  9.               System.out.println("Main方法在运行");  
  10.           }  
  11.       }  
  12. }  
  13.   
  14. class MyThread extends Thread{  
  15.     public void run(){  
  16.         while(true){  
  17.             System.out.println("MyThread类的run()方法在运行");  
  18.         }  
  19.     }  
  20. }  

(三)实现Runnable接口创建多线程
在(二)中通过继承Thread类实现多线程,但是这种方式有一定的局限性。因为在java中只支持单继承,一个类一旦继承了某个父类就无法再继承Thread类,比如学生类Student继承了person类,就无法再继承Thread类创建的线程。为了克服这种弊端,Thread类提供了另外一种构造方法Thread(Runnable target),其中Runnable是一个接口,它只有一个run()方法。当通过Thread(Runnable target)构造方法创建一个线程对象时,只需该方法传递一个实现了Runnable接口的实例对象,这样创建的线程将调用实现了Runnable接口中的run()方法作为运行代码,二不需要调用Thread类中的run()方法。

[html] view plain copy
  1. package test;  
  2.   
  3. public class example {  
  4.       public static void main(String[] args){  
  5.           MyThread myThread=new MyThread();  
  6.           Thread thread=new Thread(myThread);  
  7.           thread.start();  
  8.           while(true)  
  9.           {  
  10.               System.out.println("Main方法在运行");  
  11.           }  
  12.       }  
  13. }  
  14.   
  15. class MyThread implements Runnable{  
  16.     public void run(){  
  17.         while(true){  
  18.             System.out.println("MyThread类的run()方法在运行");  
  19.         }  
  20.     }  
  21. }  


转载自:https://blog.csdn.net/qq_32823673/article/details/78657281


查看评论

Java并发:创建线程的两种方法:继承Thread类和实现Runnable接口(一)

【1】了解进程与线程的概念 进程是一个程序在其自身的地址空间中执行一次活动,是资源申请、调度和独立运行的单位。 线程是进程中的一个单一的连续控制流程,一个进程可以包含一个或多个线程。 如果要在一个...
  • jingzi123456789
  • jingzi123456789
  • 2017-04-09 21:18:58
  • 1019

实现多线程的两种方法:继承Thread类或实现Runnable接口

实现多线程的两种方法:继承Thread类或实现Runnable接口Java中实现多线程有两种方法:继承Thread类和实现Runnable接口,在程序开发中只要是多线程,我们一般都是实现Runnabl...
  • u010412719
  • u010412719
  • 2015-07-22 21:27:02
  • 1780

java实现多线程的两种方式继承Thread类和实现Runnable接口

* 实现方式和继承方式有什么区别呢?  *         区别:  *                 继承Thread:线程代码存放在Thread子类run方法中  *           ...
  • u012110719
  • u012110719
  • 2015-07-15 11:29:49
  • 938

多线程测试题

多线程 一、判断题(T为正确,F为错误),每题1分 1.如果线程死亡,它便不能运行。(T) 2.在Java中,高优先级的可运行线程会抢占低优先级线程。( F) 3.线程可以用yield方法使低...
  • Regina_Cai
  • Regina_Cai
  • 2017-12-06 21:27:50
  • 75

并发编程学习总结(一) :java 创建线程的三种方式的优缺点和实例

java 创建线程有三种方式: (1) 继承Thread 类 (2)实现Runnable接口  (3)实现Callable接口...
  • u011784767
  • u011784767
  • 2016-05-04 15:01:43
  • 3652

Thread与Runnable两种多线程方式

多线程是Java一大特点,如果没有多个处理器,在逻辑上还是单核处理器在执行,如果在语言层面给予支持多核处理器可以在微观上同时的执行程序,Intel处理器支持超线程技术,例如双核四线程的i3甚至是8核1...
  • micro_hz
  • micro_hz
  • 2015-09-04 18:21:04
  • 1004

线程的两种创建方式:Thread类和Runnable接口,它们都要复写run方法

/*线程: * 1.如何在自定义的代码中,自定义一个线程呢? * * 通过对API的查找,java已提供了对线程这类事物的描述。就是Thread类 * * 创建线程的第一种方式:继承Th...
  • tang_tang1030
  • tang_tang1030
  • 2015-06-03 22:17:12
  • 1488

java实现多线程有两种方法:1、集成Thread类、2、实现Runnable接口

实现Runnable接口有如下优势 1、避免由于java的单继承而带来的局限。 2、相同功能的线程可以共享同一个资源。 例如: classMyThread extendsThread {...
  • chainiao_zhang
  • chainiao_zhang
  • 2017-07-25 09:49:45
  • 135

多线程——Java中继承Thread类与实现Runnable接口的区别

线程我只写过继承Thread类的,后来知道java多线程有三种方式,今天首先比较一下常用的继承Thread类和实现Runnable接口的区别。               按着Ctrl键进入Threa...
  • xdd19910505
  • xdd19910505
  • 2016-02-24 18:27:13
  • 8031

Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式

//第一种:通过实现Runnable接口创建线程 class Thread01 implements Runnable { public void run() { } } //启动线程 T...
  • StellaAh
  • StellaAh
  • 2011-09-29 12:59:42
  • 7844
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 1089
    排名: 4万+