A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 空白心 中级黑马   /  2015-6-9 00:51  /  671 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程
进程:正在进行中的程序
线程:就是进程中一个执行单元或执行情景或执行路径负责进程中程序执行的控制单元
一个进程中至少要有一个线程
当一个进程中线程有多个时,就是多线程

多线程解决的问题:可以让多部分代码同时执行。

什么是同时执行呢?其实都是cpu在瞬间做着快速切换完成的。
cpu的切换随机的,按照时间片的方式来完成。

其实java运行就是多线程的
在执行main函数中内容的同时,垃圾回收器也在回收堆内存的垃圾。
所以执行main方法的线程,和执行垃圾回收器的线程同时在执行。
这就是多线程。

jvm在启动线程的时候,每一个线程都有自己要执行的内容
其中一个负责执行main函数中的内容:这个线程称之为:主线程 main
负责垃圾回收器运行的称之为垃圾回收线程

我们就可以推理出,为什么要启动多线程呢?
因为有多部分代码需要同时执行
而且每一个线程都有自己要执行的内容,这个内容称之为:线程的任务
简单说:
启动线程就是为了执行任务,当任务有多个需要同时执行时,就需要多个线程

创建线程方式---继承Thread
通过查阅Thread类的描述,发现
创建线程有两种方式:
方式一:继承Thread类,覆盖run方法
步骤:
1,定义类继承Thread类
2,覆盖Thread类中的run方法
3,创建Thread类的子类对象创建子类线程对象
线程要执行什么内容,线程自己肯定有定义
这个定义就是run方法,这个方法中定义就是线程要运行的内容
可是该run方法的内容并不是我们所需要的。

怎么能让线程去运行我们自定义的内容呢?
只有覆盖Thread类中的run方法。覆盖之前需要先继承。
这就是为什么要继承Thread,类并覆盖run方法的原因。

主线程要运行的任务都在main函数中
自定义的线程要运行的任务都在run方法中

run方法就是专门用于存储线程任务代码的地方

2 个回复

倒序浏览
不错,学习一下
回复 使用道具 举报
赞一个,很有用的信息
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马