黑马训练营——多线程之创建线程
来源:互联网 发布:推广必备软件 编辑:程序博客网 时间:2024/04/26 20:19
------- android培训、java培训、期待与您交流! ----------
如何在自定义代码中自定义一个线程?(三种方式)
第一种:创建线程的第一种方式,继承Tread类。(必训复写run()方法)
1:定义类继承Tread类,
2:复写run()方法
目的:将自定义的代码存储在run方法,让线程运行。
3.调用线程的start方法:
作用:1)启动线程
2)调用run方法
运行线程每次都不一样的原因:
因为多个线程都获取cpu资源。cpu 执行到谁谁就运行,在某一时刻只能一个程序在运行,多线程相互抢夺cpu执行权,这是多线程的一个特性:随机性;
覆盖run()方法的原因:
Thread类用于描述线程,该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。也就是说Thread类中的run方法用于存储线程要运行的代码。
start()方法:开启线程并执行该线程的run()方法;
多线程的状态:有新建状态,就绪状态 ,运行状态,阻塞状态,终止状态;
static Thread currentThread()用于获取当前的线程对象,
getName()用于获取线程名称;
setName()或构造方法用于设置线程名称;
第二种定义线程的方法:声明实现接口Runnable的类:
步骤:
1.定义实现Runnable接口的类;
2.实现Runnable接口中的run()方法:将线程要运行的代码存在该方法中;
3.通过Thread类建立线程对象;
4.将Runnable接口子类对象作为Thread类的参数传给Thread类的构造方法;
为什么要将Runnable接口的子类对象作为实参传给Thread类的构造方法?
因为自定义的run()方法所属对象的子类对象所以要用线程去指定对象的run()方法,就必须明确该run()方法所属的对象;
5.函数Thread类的start方法开启线程并调用Runnable接口子类;
实现方式和继承方式有什么区别?
实现方式的好处:实现了单继承的局限性,在定义线程时,建议使用实现方式
继承Thread:线程代码存放在Thread的子类的run()方法中,
实现Runnable:线程代码存放在接口的子类的run()方法中;
第三种方式:使用callable和Future创建线程
从Java 5 开始Java提供了Callable接口,他提供了一个call()方法可以作为线程的执行体,但是call()比run()方法功能更强大,
1.Call方法可以有返回值;
2. Call方法可以声明抛出异常。
Java5 提供了Future接口来代表Callable接口里的call()方法的返回值,并为Future接口提供了一个FutureTask实现类,实现了Future和Runnable接口可以
做为Thread构造方法的实参。
------- android培训、java培训、期待与您交流! ----------
- 黑马训练营——多线程之创建线程
- 黑马程序员——Java多线程之创建线程
- 黑马训练营 ---------多线程
- 黑马训练营--多线程
- 黑马程序员—多线程(上)-线程及其创建方法
- Java线程学习和笔记——黑马训练营
- 黑马程序员——多线程之线程间的通信
- 黑马程序员——Java多线程之线程安全问题
- 黑马程序员——多线程之线程间的通信
- 黑马程序员——多线程--线程的创建方式和线程安全的简单介绍
- 多线程之线程创建
- 黑马程序员——多线程—创建线程的3种方式
- 黑马程序员—单线程与多线程
- 黑马程序员——JAVA基础之简述多线程,两种创建多线程的方式
- 多线程之pthread_create创建线程
- Java多线程之创建线程
- 多线程系列之创建线程
- 黑马训练营-学习笔记----多线程
- Oracle Error 查看网站
- display:inline、block、inline-block的区别
- js 正则总结
- apktool+dex2jar+xjad反编译APK文件
- EKF/UKF/IMM
- 黑马训练营——多线程之创建线程
- SQL触发器基础
- C#递归求解Factorial数列
- getpass模块
- 使用opengl绘制一个立方体
- EcShop充值卡功能插件(1)
- Debug--寄存器的十六进制
- cocos2d-x VS2008 安装出现的问题
- 黑马程序员——线程同步的几种方式