黑马程序员_多线程的第一种创建方式
来源:互联网 发布:贩卖数据 编辑:程序博客网 时间:2024/06/05 06:51
多线程(多线程创建的方式一-继承Thread类)
如何创建一个线程呢? 创建线程方式一:继承Thread类。 步骤: 1.定义一个类继承Thread类。 2.覆盖Thread类中的run方法。 3.直接创建Thread的子类对象创建线程。 4.调用start方法开启线程并调用线程的任务run方法执行 创建线程的目的是为了开启一条执行路径, 去运行指定的代码和其他代码实现同时运行。而运行的指定代码就是这个执行路径的任务。jvm创建的主线程的任务都定义在了主函数中。而自定义的线程它的任务在哪儿呢?Thread类用于描述线程,线程是需要任务的。所有Thread类也对任务的描述。这个任务就通过Thread类中的run方法来体现,也就是说,run方法就是封装自定义线程运行任务的函数。run方法中定义就是线程要运行的任务代码。开启线程是为了运行指定代码,所以只有继承Thread类,并覆写run方法。将运行的代码定义在run方法中即可。
class Demo extends Thread{ private String name; Demo(String name){ this.name=name; } public void run(){ for(int x=0;x<10;x++){ for(int y=-999999999;y<99999999;y++){} System.out.println(name+"...x="+x); } }}public class Thread05_1 { public static void main(String[] args) { Demo d1=new Demo("旺财"); Demo d2=new Demo("xiaoqiang"); d1.start();//开启线程,会自动调用run()方法 d2.start(); }}
获取线程的名字
可以通过Thread的getName()获取线程的名称 Thread-编号(从0开始) 主线程的名字就是main。
class Demo extends Thread{ private String name; Demo(){} Demo(String name){ // super(name); this.name=name; } public void run(){ for(int x=0;x<10;x++){ // for(int y=-999999999;y<99999999;y++){} System.out.println("x="+x+".....name=="+Thread.currentThread().getName());//获取当前线程的名称 } }}public class Thread06_1 { public static void main(String[] args) { Demo d1=new Demo("旺财"); Demo d2=new Demo("xiaoqiang"); d1.start();//开启线程,会自动调用run()方法 d2.start(); System.out.println("over...."+Thread.currentThread().getName()); }}
多线程(多线程运行图解)
class Demo extends Thread{ private String name; Demo(String name){ super(name); // this.name=name; } public void run(){ for(int x=0;x<10;x++){ /* int[] arr=new int[3]; System.out.println(arr[3]);*///数组越界异常 System.out.println("...x="+x+".....name=="+Thread.currentThread().getName()); } }}public class Thread07_1 { public static void main(String[] args) { Demo d1=new Demo("旺财"); Demo d2=new Demo("xiaoqiang"); d1.start(); d2.start(); System.out.println(4/0); for(int x=0;x<20;x++){ System.out.println(x+"......."+Thread.currentThread().getName()); } }}
在多线程运行的图解中,
就算main线程结束了。并不代表xiaoqiang,旺财结束。
颠覆了传统的观念,main函数结束了,就不可以运行。
在多线程中,相当于开启了三条大马路。main结束了,其他的线程也在自己的空间内运行。
且线程之间是互相不影响的。不管谁抛了异常,都不会影响其他的线程。
0 0
- 黑马程序员_多线程的第一种创建方式
- 黑马程序员_多线程的第二种创建方式
- 黑马程序员_笔记_多线程(创建线程的第二种方式:实现Runable接口)
- 黑马程序员_多线程的两种创建方式与区别
- 黑马程序员_多线程间通信的两种方式
- 黑马程序员_多线程的创建和运行机制学习笔记
- 黑马程序员_日记44_TreeSet第一种排序方式小结
- 黑马程序员_创建线程的两种方式
- 黑马程序员---多线程创建的三种方式,及比较
- 黑马程序员------多线程创建的3种方式
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员-C学习日记-数组
- 如何用mathematica做泰勒逼近,animate函数使用,插值
- Shell
- 搭建一个简单的git服务器(基于阿里云)
- osg 多个error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public:
- 黑马程序员_多线程的第一种创建方式
- 读写相同的大型数据
- Energetically Consistent Invertible Elasticity
- 01 block的用法
- 02 形参个数可变的方法
- 03 单例模式
- 04 @package访问控制符
- POJ 2455 解题报告
- UVALive 6917Decoding Baby Boos(签到)