皮皮安学Java第二十九天(线程)

写在前面

为什么好久没更新了???嗯…怎么说呢,也没有忙什么,也没怎么学,这段时间有点迷,还变懒了,之前每天早上还起来跑跑步的,现在每天十点才醒来…好像是有点懈怠了,不管怎么,还是要调整好状态吧,总想着暑假回去怎么怎么学。都是空想,在学校都没有好好学,回到家里就能好好学了???

哎,一步一步来吧,尽量在学校把线程,反射,设计模式好好看看,回去找本Java书实战一段时间。

今日所学

线程
一、简介
1.进程
进程:在操作系统中独立的程序,每次运行一个应用程序就对应着一个进程process
多进程:在操作系统可以同时运用多个程序。
2.线程
线程:是进程内部的一个执行单元,用来执行应用程序中的一个功能thead
多线程:在一个应用程序中可以同时执行多个功能。

特性:
一个进程中可以包含多个线程,且至少有一个线程。
一个线程必须属于某个线程,进程是线程的容器
一个进程的多个线程共享该进程的所有资源

3.CPU时间片
对于单核CPU,在某个时间点只能处理程序。
CPU分配给各个程序的时间,称为时间片,即该进程允许运行的时间
从表面上看各个程序是同时运行的,实际上CPU在同一时间只能运行一个程序
只是CPU在很短的时间内,在不同程序间来回切换,轮流执行每个程序,执行速度很快,所以感受上像是同时在运行

二、创建线程
两种方式:

			继承Thread类
			实现Runnable接口

JVM启动时会创建一个主程序,用来执行main方法。实际上,Java程序在运行时至少会启动两个线程。

			main线程
			垃圾回收线程gc

1.继承Thread类
步骤
1.定义一个类,继承Thread类,重写run()方法
2.创建该类的实例,即创建该流程
3.调用start()方法,启动线程(不能直接调用run()方法),调用start()并不立即执行,要获取到CPU的时间线才会执行。
调用getName()获取线程的名字
Thread.currentThread();获取当前线程对象

2.实现Runnable接口
步骤
1.定义一个类,实现Runnable,实现run()方法
Thread.currentThread()。getName();获取线程
2.创建实现类的实例
3.创建Thread类的实例,将上一步的实例传入。
4.启动线程

3.两种方式的对比
继承Thread类
线程执行的代码放在Thread类的子类的run()方法中,无法继承其他类。
实现Runnable接口
线程执行的代码放在Runnable接口的实现类的run()方法中
可以继承其他类,避免单继承的局限性
适合多个相同程序代码的线程,去处理同一个资源
增强程序的健壮性。

猜你喜欢

转载自blog.csdn.net/qq_46178251/article/details/107322734