当前课程知识点:JAVA程序设计进阶 > 第一章 线程(上) > 1.2 通过Thread类创建线程 > Video
今天这一节我们将介绍
如何去创建线程
JAVA语言当中
创建线程有两种方式
那我们在这一节中
将介绍第一种方式
通过Thread类来创建线程
Thread类直接继承于Object类
它实现了Runnable接口
它是位于java.lang这个包当中
Thread类封装了
线程对象需要的属性和方法
那我们需要写一个子类
来继承Thread类
那我们这个子类当中
就需要重写它的run方法
把我们想需要执行的代码
放入到run方法当中
需要提醒大家的是
启动一个线程的话
是通过start方法来启动新线程
而不是直接去运行run方法
下面我们看一下这个例子
我们要在新线程中
完成计算某个整数的阶乘
我们定义一个类
叫这个FsctorialThreadTester
里面有一个主方法
主方法的话第一句话
是打印出在主线程已经开始
然后我们又实例化了
FsctorialThread
这个类的一个对象
我们给它名字叫Thread
然后调用它的构造方法
那给它的参数是10
紧接着调用thread start方法
注意在这里不是调用run方法
而是调用thread方法
这就意味着这个线程已经启动
启动完了以后
就由我们的线程调度器
来去调度这个线程的执行
那在执行线程的时候
它就会执行我们的线程
所对的run方法
而这个线程开始启动以后
我们最后一行代码是
打印出主线程结束了
我们再看一下这个
FsctorialThread
它的内容是什么
它继承了我们的Thread类
它有一个私有的成员变量num
然后这是它的构造方法
构造方法当中
只不过是把参数num传进来
我们再看一下它的主方法
在主方法当中
实现这一个阶乘的计算过程
那在阶乘计算之前的话
它会首先打印
说新的线程开始
就是new thread started
然后开始计算
算完后把结果打印出来
最后会显示new thread ends
也就是说这个新的线程结束了
我们来看一下
整个程序的运行结果
大家看第一个
main thread starts
主线程启动了
然后马上又看到
main thread ends
主线程结束了
那其实说明什么
我们这个JAVA类的主方法
在它运行的过程当中
实际上主方法就是一个线程
那我们在主方法中
实例化出的另外一个线程
我们看它叫new thread
new thread started
表明这个新的线程这个开始了
然后又列出了
我们计算阶乘的结果
然后最后显示出新的线程结束了
那在这个例子当中
我们可以看到
主线程已经执行完了以后
新的线程才开始执行
并且执行完
那在我们主线程的main方法当中
我们调用thread start方法
启动我们的新的线程
但是并不意味着
它是马上就开始执行
因为产生线程以后
如何调度这个线程的执行
是由我们线程的调度器
来去调度的
那在我们这个例子当中
你可以看到至少有两个线程
一个就是我们的主线程
一个就是我们自己新产生的线程
那从我们目前执行的结果来看
我们的主线程先执行结束
其次才是我们新产生的线程
如何通过Thread类来创建线程
就介绍到这里
谢谢大家
-1.0 导学
--Video
-1.1 线程的基本概念
--Video
-1.1 线程的基本概念--作业
-1.2 通过Thread类创建线程
--Video
-1.2 通过Thread类创建线程--作业
-1.3 线程的休眠
--Video
-1.3 线程的休眠--作业
-1.4 Thread类详解
--Video
-1.5 通过Runnable接口创建线程
--Video
-1.5 通过Runnable接口创建线程--作业
-1.6 线程内部的数据共享
--Video
-2.0 导学
--Video
-2.1 线程同步的思路
--Video
-2.2 线程同步的实现方式—Synchronization
--Video
-2.3 线程的等待与唤醒
--Video
-2.4 后台进程
--Video
-2.5 线程的生命周期与死锁
--Video
-2.6 线程的调度
--Video
-3.0 导学
--Video
-3.1 线程安全与线程兼容与对立
--Video
-3.2 线程的安全实现-互斥同步
--Video
-3.3 线程的安全实现-非阻塞同步
--Video
-3.4 线程的安全实现-无同步方案
--Video
-3.5 锁优化
--Video
-4.0 导学
--Video
-4.1 URL对象
--Video
-4.2 URLConnection对象
--Video
-4.3 Get请求与Post请求
--Video
-4.4 Socket通信原理
--Video
-4.5 Socket通信实现
--Video
-5.0 导学
--Video
-5.1 Socket 多客户端通信实现
--Video
-5.2 数据报通信
--Video
-5.3 使用数据报进行广播通信
--Video
-5.4 网络聊天程序
--Video
-6.0 导学
--Video
-6.1 Java虚拟机概念
--Video
-6.2 Java虚拟机内存划分
--Video
-6.3 Java虚拟机类加载机制
--Video
-6.4 判断对象是否存活算法及对象引用
--Video
-6.5 分代垃圾回收
--Video
-6.6 典型的垃圾收集算法
--Video
-6.7典型的垃圾收集器
--Video
-7.0 导学
--Video
-7.1 集合框架与ArrayList
--Video
-7.2 LinkedList
--Video
-7.3 HashMap与HashTable
--Video
-7.4 TreeMap与LinkedHashMap
--Video
-7.5 HashSet
--Video
-8.0 导学
--Video
-8.1 Java反射机制
--Video
-8.2 Java静态代理
--Video
-8.3 Java动态代理
--Video
-8.4 Java 反射扩展-jvm加载类原理
--Video
-8.5 Java进阶课程总结
--Video