黑马程序员_多线程1
来源:互联网 发布:网络平台销售管理 编辑:程序博客网 时间:2024/05/29 14:18
-----------------------------------------------------------------android培训、java培训、期待与您交流! ----------------------------------------------------------------
1. 进程:
是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。
2. 线程:
就是进程中的一个独立控制单元。线程在控制中进程的执行。一个进程中至少有一个线程
3. 主线程
Java VM 启动的时候会有一个进程java.exe运行。该进程中至少有一个线程负责java程序的运行。
而且这个线程运行的代码存在于main方法中。该线程称之为主线程。
4. 如何在自定义的代码中,自定义个线程?
有两种方式:①继承Thread类 ②实现Runnable接口
4.1创建线程的第一种方式:继承Thread类
在api中,java已经提供了对线程这类事物的描述,就是Thread类
步骤:
① 定义类继承Thread
②复写Thread类中的run方法
目的:将自定义的代码存储在run方法,让线程运行。
② 调用线程的start方法
该方法两个作用:①启动线程②调用run
4.2多线程的异步性
当两个以上线程同时进行时,发现运行结果每一次都不同。因为多个线程都会去获得cpu的执行权。cpu执行到谁,谁就运行。
明确一点,在某一个时刻,只能有一个程序在运行(多核除外),cpu在各个线程间做快速的切换,已达到看上去是同时运行的效果。我们可以形象的把线程的运行行为认为在互相抢夺cpu的执行权,这就是多线程的一个特性:随机性(操作系统中称为异步性)
4.3为什么要覆盖run方法呢?
Thread类用于描述线程
该类就定义了一个功能,用于存储线程要运行的代码。该存储功能就是run方法。
也就是说Thread类中的run方法,用于存储线程要运行的代码。
4.4 线程的运行状态
线程有6种状态:
新建NEW
运行(可运行)RUNNABLE
阻塞BLOCKED
等待WAITING
计时等待TIME_WAITING
终止TERMINATED
start()、sleep(time)、wait()、notify()、stop()
4.5获取线程对象以及名称
创建的线程都有自己默认的名称:Thread-编号 (编号从0开始)
static ThreadcurrentThread(): 获取当前线程对象(因为是静态方法可以直接使用类名调用)
getName(): 获取线程名称
设置线程名称:通过setName()函数或者通过构造函数
4.6 创建线程的第二种方式:实现Runnable接口
步骤:
① 定义类实现Runnable接口
② 覆盖Runnable接口中的run方法
将线程要运行的代码存放在该run方法中
③ 通过Thread类建立线程对象
④ 将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数
为什么要将Runnable接口的子类对象传递给Thread的构造函数?
因为,自定义的run方法所属的对象是Runnable接口的子类对象。所以要让线程去指定对象的run方法,就必须明确该run方法所属对象
⑤ 调用Thread类的start方法开启线程并调用Runnable接口子类的run方法
5. 实现方式和继承方式有什么区别呢?
实现方式好处:避免了单继承的局限性。(在定义线程时,建议用实现的方式)
两种方式的区别:
继承Thread:线程代码存放Thread子类run方法中
实现Runnable:线程代码存放在接口的子类的run方法中。
- 黑马程序员_多线程1
- 黑马程序员_多线程1
- 黑马程序员_多线程1
- 黑马程序员_多线程1
- 黑马程序员_多线程1
- 黑马程序员_多线程1
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 并非哲学
- POJ 1837 简单 DP 二逼 DP = =
- MediaPlayer IllegalStateException
- 学习
- 汇编学习计划
- 黑马程序员_多线程1
- Cocos2d-x 的“HelloLua” 深入分析 (一)
- 人生三句话
- 如何判断PHP 是线程安全还是非线程安全的
- 写个2D刚体模拟器,麻雀虽小五脏俱全
- 抽奖软件
- 设定 Android NDK 编译环境并移植 ffmpeg
- Android-NDK-r9编译ffmpeg-0.11.3
- ZOJ-2966