java之多线程中Thread类和Runnable接口使用方法
java提供了两种线程方式,一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码!第二种是实现Runnable接口创建多线程。下面就跟大家具体的介绍一下这两种方式!
在学习多线程之前先来看看我们熟悉的单线程程序
package bean;
public class Example3_2 {
public static void main(String[] args){
MyThread myThread=new MyThread();//创建myhread对象
myThread.run();
while (true){
System.out.println("Main方法在运行");
}
}
}
class MyThread{
public void run(){
while(true){
System.out.println("MyThread类的run()方法在运行");
}
}
}
运行结果如下面所示
从上面运行结果可以看出程序一直打印的是“MyThread类的run()方法在运行”,而不会执行main()方法中的打印语句。这是因为上面程序是一个单线程程序,调用MyThread类的run()方法时遇到了死循环,循环会一直进行。
如果想要两个while循环中的打印语句能够并发执行,那就需要实现多线程了,实现多线程有两种方式,现在就给大家介绍第一种方式
1.继承Thread类创建多线程
把以上代码进行简单修改
package bean;
public class Example3_2 {
public static void main(String[] args){
MyThread myThread=new MyThread();//创建线程myhread的线程对象
myThread.start(); //开启线程
while (true){ //通过死循环语句打印输出
System.out.println("Main方法在运行");
}
}
}
class MyThread extends Thread{
public void run(){
while(true){ //通过死循环语句打印输出
System.out.println("MyThread类的run()方法在运行");
}
}
}
运行结果如下面:
从上面能看出两个循环语句轮流执行了,说明该例实现了多线程!!!
单线程的程序在运行时,会按照代码的调用顺序进行执行,而在多线程中main()方法和MyThread类的run()方法却可以同时运行,互不影响,这正是单线程和多线程的区别。
2.实现Runnable接口创建多线程
首先,为啥要使用Runable接口来创建多线程呢,这是因为通过继承Thread类实现多线程有一定的局限性,因为java中只支持单继承,一个类一旦继承了某个父类就无法再继承Thread类了
Runnable克服了这种弊端,Runnable接口提供了run()方法的原型,因此创建新的线程类时,只要实现此接口,既只要特定的程序代码实现Runnable接口中的run()方法,就可以完成新线程类的运行下面是一个使用Runnble接口并实现run方法创建线程的例子。
package bean;
public class Example3_2 {
public static void main(String[] args){
MyThread myThread=new MyThread(); //创建线程myhread的线程对象
Thread thread=new Thread(myThread);//创建线程对象
thread.start(); //开启线程,执行线程中的run()方法
while (true){ //通过死循环语句打印输出
System.out.println("Main方法在运行");
}
}
}
class MyThread implements Runnable{
public void run(){
while(true){ //通过死循环语句打印输出
System.out.println("MyThread类的run()方法在运行");
}
}
}
运行结果和上面一样
下面咱们具体讲一下用Runnable创建线程步骤:
Runnable创建线程步骤
(1)创建一个实现Runnable接口的类,并且在这个类中重写run方法
class MyThread implements Runnable{
public void run(){
..........
}
(2)使用关键字new创建一个MyThread的实例
MyThread myThread=new MyThread();
(3)通过Runnable的实例创建一个线程对象,在创建线程对象时,调用的构造函数是new Thread(myThread),它用myThread中实现的run()方法作为新线程对象的run()方法。
Thread thread=new Thread(myThread);
(4)通过调用ThreadType对象的start()方法启动线程运行。
thread.start();
以上是两者的简单使用方式,下一篇会讲解一下两种多线程方式的区别,有需要的可以看一下!!!
原文地址: https://blog.csdn.net/qq_40219476/article/details/78444707
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章