多线程创建: 在java里,多线程的创建方式,一是继承Thread类,一种是实现Runnable接口。
无论是哪一种线程创建方式,我们都要重写run( )方法。
只有run( )方法中的业务代码,才是线程开启后去执行的业务逻辑。
而每一个继承Thread类的类,对象实例化过程中,就可以创建一个线程。
而实现Runnable接口的类,必须要装载在Thread类中,才是真正创建一个线程。
因为java的父类继承资源的瓶颈,所以实现接口方式会更加灵活。
我个人理解,Runnable接口仅仅只是提供一个业务逻辑的抽象,本身本没有线程的特征,所以它的线程创建需要借助Thread类。
以上,不过仅仅是创建线程,这些并不会真正运行线程的业务方法。我们还需要去开启线程。
线程开启的方式是调用start( )方法,而不是run( )方法,调用run( )方法还是在主线程上串行运行。
实例:
package com.xm.thread.t_19_01_26;
/**
* 多线程创建方式
*/
public class CreateThread {public static void main(String[] args) {
//继承Thread类的线程开启
new Thread1().start();
//实现Runnable接口的线程开启
new Thread(new Thread2()).start();
System.out.println("线程创建的两种方式");
}
}/**
* 继承Thread类,创建线程
*/
class Thread1 extends Thread {@Override
public void run() {
System.out.println("继承Thread类创建线程");
}
}/**
* 实现Runnable接口,创建线程
*/
class Thread2 implements Runnable{@Override
public void run() {
System.out.println("实现Runnable接口创建线程");
}
}
运行结果:
第一次运行:通过线程的调用方式,我们可以看出来,线程之间的执行顺序貌似是不可控的,实际上cpu对线程资源的切换就是随机的。下一节,我们来探讨线程优先级。
继承Thread类创建线程
实现Runnable接口创建线程
线程创建的两种方式
第二次运行:
【2.线程创建方式】线程创建的两种方式
继承Thread类创建线程
实现Runnable接口创建线程
转载于:https://www.cnblogs.com/TimerHotel/p/thread02.html
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)