【 Thread】创建线程的2种方法
(一)Thread类
1.结构
java.lang.Object
|---java.lang.Thread
2.创建线程的两种方法
(1)一种方法是将类声明为Thread的子类,该子类应重写Thread类的run方法
class PrimeThread extends Thread {long minPrime;PrimeThread(long minPrime) {this.minPrime = minPrime;}public void run() {// compute primes larger than minPrime. . .}
}
PrimeThread p = new PrimeThread(143);
p.start();
(2)创建线程的另一种方法是声明实现Runnable接口的类,然后该类实现run方法。然后可以分配该类的实例,在创建Thread时作为一个参数来传递并启动
(3)这种方法给已经实现继承的类,提供了实现多线程的扩展方法,实现接口
class PrimeRun implements Runnable {long minPrime;PrimeRun(long minPrime) {this.minPrime = minPrime;}public void run() {// compute primes larger than minPrime. . .}
}
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
代码1:第一种创建线程的方法
MyThread类
// 1.继承Thread类
public class MyThread extends Thread{private String threadName;public MyThread() {super();}// 提供一个有参的构造法方法,把名字传给父类的构造方法直接传递一个线程的名字public MyThread(String threadName) {super(threadName);this.threadName = threadName;}// 2.重写run方法@Overridepublic void run() {for(int i=0;i<5;i++) {System.out.println(this.getName()+": hello : "+i);}}
}
Main
public class Main {public static void main(String[] args) {//no_parameter_construction_method();threadName_construction_method();}/*** 1.调用无参数的构造方法创建线程对象和设置线程名字* */public static void no_parameter_construction_method() {// 3.创建线程的实例对象MyThread my1=new MyThread();MyThread my2=new MyThread();// 4.可以设置线程的名字,不设置默认使用JVM给分配的名字(Thread-N)my1.setName("线程1");my2.setName("线程2");// 5.启动线程// 调用run()的话,的就是单纯的调用方法// 调用线程应该使用start()方法my1.start();my2.start();System.out.println("end");}public static void threadName_construction_method() {// 3.创建线程的实例对象MyThread my3=new MyThread("线程3");MyThread my4=new MyThread("线程4");// 4.启动线程my3.start();my4.start();System.out.println("end");}
}
代码1:第二种创建线程的方法
OurThread类
// 1.实现Runnable接口
public class OurThread implements Runnable{// 2.重写run方法@Overridepublic void run() {for(int i=0;i<10;i++) {// 3.获取当前线程名字System.out.println(Thread.currentThread().getName()+": 你好 : "+i);}}
}
Main
public class Main {public static void main(String[] args) {// 这2个方法调用,不会等待上一个方法完事后,下一个方法才开始,而是不阻塞直接就开始createThread();createNameThread();}public static void createThread() {// 4.创建实现接口类对象// 5.创建线程OurThread ot1=new OurThread();Thread t1=new Thread(ot1);OurThread ot2=new OurThread();Thread t2=new Thread(ot2);t1.start();t2.start();System.out.println("end");}public static void createNameThread() {// 4.创建实现接口类对象// 5.创建线程,可以带名字,不带则使用JVM默认分配的名字OurThread ot1=new OurThread();Thread t1=new Thread(ot1,"线程01");OurThread ot2=new OurThread();Thread t2=new Thread(ot2,"线程02");t1.start();t2.start();System.out.println("end");}
}
转载于:https://blog.51cto.com/13634837/2091795
【 Thread】创建线程的2种方法相关推荐
- Java学习笔记:创建线程的两种方法
Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程
- Java创建线程的三种方法
这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...
- Java 创建线程的三种方法比较
在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...
- 创建线程的七种方法 (图解 全网最全最详细)
本文创建于 2021年5月14日 作者:Xiang 参考文献:创建多线程的四种方法 创建线程的8种方法 创建匿名线程的5种方法 特别鸣谢 文章目录 1.什么是多线程 2.线程状态 3.线程同步方法 4 ...
- java创建线程的两种方法区别
在Java中创建一个线程有两种方法:继承Thread类和实现Runnable接口. 下面通过两个例子来分析两者的区别: 1)继承Thread类 public class TestThread exte ...
- 为什么不能线程调用类的成员函数_C++多线程编程之创建线程的几种方法
点蓝色字关注"CurryCoder的程序人生" 微信公众号:CurryCoder的程序人生 怕什么真理无穷,进一寸有一寸的欢喜 1.线程基础知识 可执行程序运行起来,就会生成一个进 ...
- java创建线程的四种方法
第一种: 通过继承Thread类创建线程 第二种: 通过实现Runnable接口创建线程 这两种早已烂记于心,这里就不作过多的介绍, 主要介绍其源码 Thread类 implements Runna ...
- java for循环创建线程_Java创建线程的两种方法
大多数情况,通过实例化一个Thread对象来创建一个线程.Java定义了两种方式: 实现Runnable 接口: 可以继承Thread类. 下面的两小节依次介绍了每一种方式. 实现Runnable接口 ...
- java 创建线程的三种方法_java 创建线程的几种方式
说道线程,肯定会想到使用 java.lang.Thread.java这个类 那么创建线程也主要有2种方式 第一种方式: public class MyThread extends Thread { p ...
最新文章
- Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架
- Python:PDB文件中原子和残基重新编号
- C++文件输入和输出
- 关于react diff 算法(译文)
- 算法--------打家劫舍(动态规划,Java版本)
- 使用TestNG-xslt+ant来美化selenium测试报告
- Flex通用克隆(clone)方法
- (视频+图文)机器学习入门系列-第1章 引言
- TCP中的RTT和RTO
- 6.Excel项目排期表
- 是什么东西_隐形牙套附件是什么东西?
- Oracle下的Databse,Instance,Schemas
- Java native方法String转char*以及String[]转char**
- org.springframework.beans.BeanUtils
- 零基础学python用哪本书好-零基础自学python3 好用的入门书籍推荐
- base/7/x86_64/filelists_db FAILED
- 滤波电路对服务器的影响,滤波电路到底有什么作用?
- mysql主从 副本集,MongoDB的主从、副本集模式
- acer软件保护卡怎么解除_Acer软件保护卡下载
- 程序员如何规划自己的职业生涯
热门文章
- RocketMQ-初体验RocketMQ(01)_RocketMQ初体验
- Spring JDBC-使用XML配置声明式事务
- Oracle优化06-Hint
- 如何让服务器运行js,服务器端JavaScript运行环境Node.js的依赖性管理
- 如何正确运用计算机,如何正确使用电脑
- python结巴分词 词频统计_一个txt文档,已经用结巴分词分完词,怎么用python工具对这个分完词的文档进行计算统计词频,求脚本,非...
- python和c语言的对比_类C语言与Python负数除法求值间的差异
- JavaScript比较数组的方法
- oracle sys 查询语句,Oracle EBS-SQL (SYS-7):表单个性化查询.sql
- 计算机软件硬件试讲,试讲:初识计算机网络