这几天断了,一个是为了查看自己学的牢固不,再一个就是将前面的内容进行一个断了之后的回忆。今天继续开始学习。分享个第一天的笔记吧。都是WORD保存,还未传到博客。
多线程
概述:
进程: 是一个正在执行中的程序
每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元
线程: 就是进程中的一个独立的控制单元。
|——线程在控制着程序的执行。
一个进程中至少有一个线程。
Java VM(虚拟机) 启动的时候会有一个进程Java.exe 。
该进程中至少有一个线程负责Java程序的执行。
该线程称为主线程。
扩展:其实更细节说明JVM,JVM启动不止一个线程,还有负责垃圾回收机制的线程。
1.如何在自定义的代码中,自定义一个线程呢?
通过对API的查找,Java已经提供了对线程这类事物的描述。就是Thread类。
创建线程的第一种方式:继承Thread类。
操作步骤: 1.定义类继承Thread类
2.覆写Thread类中的run方法。
目的:将自定义代码存在run方法。让线程运行。
3.调用线程start方法
该方法两个作用:启动线程,调用run方法。
代码: 图例
解析: 发现运行结果每一次都不同。
因为多个线程都获取CPU的执行权。CPU执行到谁,谁就运行。
明确一点,在某一时刻,只可以有一个程序在运行(多核除外)
其实是CPU在做着快速的切换,已达到看上去同时运行的效果。
我们可以形象的把多线程的运行形容为在互相抢夺CPU的执行权。
这就是多线程的一个特性: 随机性 。
|——谁抢到谁就执行,至于执行多长时间,CPU决定。
2:创建线程run()和start()的特点
Thread类用于描述线程。
该类就定义了一个功能,用于存储线程要执行的代码。该存储功能就是run方法。
也就是说Thread类中的run方法,用于存储线程要执行的代码。
重要面试经常问到:
d.start(); ——开启线程模式并执行该线程的run方法。
d.run(); ——仅仅是对对象的调用方法。而线程创建了,并没有运行。
线程的5种运行状态:
3:获取线程对象及线程名称
原来线程都有自己的默认的名称。
Thread – 编号 : 该编号从0开始。
static Thread currentThread():获取当前线程对象。
getName() :获取线程名称。
设置线程名称:setName或者构造函数。
部分图例代码都是图片这边不显示。 |
|