当前位置:网站首页>程序,进程,线程;内存结构图;线程的创建和启动;Thread的常用方法
程序,进程,线程;内存结构图;线程的创建和启动;Thread的常用方法
2022-04-23 07:22:00 【z754916067】
目录
程序 进程 线程的基本概念
程序
为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。
进程
是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生,存在和消亡的过程,即生命周期。
是资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。
线程
进程可进一步细化为线程,是一个程序内部的一条执行路径。
一个Java应用程序java.exe,至少会有三个线程:main(主线程) gc()垃圾回收线程,异常处理线程
线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程切换的开销小。
一个进程中的多个线程共享相同的内存单元/内存地址空间->它们从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便高效,但多个线程操作共享的系统资源可能就会带来安全隐患。
并行和并发
并行:多个CPU同时执行多个任务
并发:一个CPU同时执行多个任务
内存结构图
多个线程共享方法区和堆,每个线程有自己的虚拟机栈和程序计数器
线程的创建和启动
Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来体现。
Thread类的特性
- 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体。
- 通过该Thread对象的start方法()来启动这个线程,而非直接调用run()
方式一:继承Thread
- 创建继承于Thread类的子类
- 重写Thread类的run()方法,该线程需要执行的操作可以声明在run方法中。
- 创建Thread子类对象
- 通过此对象调用start()
//多线程的创建 方式一:继承Thread类
class MyThread extends Thread{
//重写run方法
@Override
public void run() {
for(int i=0;i<100;i++){
System.out.println(i);
}
}
}
public class ThreadTest {
public static void main(String[] args) {
MyThread myThread = new MyThread();
//启用当前线程并且调用当前线程的run方法 只能调用一次
myThread.start();
//打印出来的效果是和run()方法里夹杂的 这说明有两个线程在执行
for(int i=0;i<100;i++){
System.out.println(i+"******main线程******");
}
}
}
Thread的常用方法
start()
启动线程,并执行对象的run()方法
run()
线程在被调度时执行的操作
String getName()
返回线程的名称
void setName(String name)
设置该线程名称
static Thread currentThread()
返回当前线程。在Thread子类中为this,通常用于主线程和Runnable实现类。
yield()
线程让步,暂停当前正在执行的线程,把执行机会让给优先级相同或者更高的线程。
join()
在线程a中调用线程b的join()方法,此时线程a就进入阻塞状态,直到线程b完全执行完后,线程a才结束阻塞状态。
static void sleep(long millis)
令当前活动线程在指定时间内放弃的CPU控制,使其它线程有机会被执行,时间到后当前线程再开始执行。
stop()
强制线程生命周期结束,已过时不推荐使用
boolean isAlive()
返回boolean,判断线程是否还活着
版权声明
本文为[z754916067]所创,转载请带上原文链接,感谢
https://blog.csdn.net/z754916067/article/details/124323327
边栏推荐
- js常用数组方法
- Smart business card applet business card details page function implementation key code
- [effective go Chinese translation] part I
- 将实例化对象的方法 给新的对象用
- 编译原理题-带答案
- The following program deletes n consecutive words starting from the ith character from the string str
- Interesting JS code
- Qt读取路径下所有文件或指定类型文件(含递归、判断是否为空、创建路径)
- Distributed service governance Nacos
- Online yaml to XML tool
猜你喜欢
2022.4.11-4.17 AI行业周刊(第93期):AI行业的困局
The whole house intelligence bet by the giant is driving the "self revolution" of Hisense, Huawei and Xiaomi
浅谈ES6尾调优化
CSV column extract column extraction
How to read books and papers
The simple problem of leetcode is to calculate the numerical sum of strings
ASAN 极简原理
ansible自动化运维详解(一)ansible的安装部署、参数使用、清单管理、配置文件参数及用户级ansible操作环境构建
1216_MISRA_C规范学习笔记_控制流的规则要求
nn.Module类的讲解
随机推荐
396. Rotate Function
一篇文章看懂变量提升(hoisting)
php生成短链接:将数字转成字母,将字母转成数字
室内定位技术对比
npm安装yarn
网赚APP资源下载类网站源码
Data security has become a hidden danger. Let's see how vivo can make "user data" armor again
一键清理项目下pycharm和Jupyter缓存文件
Manipulator motion planning in 3C assembly
LeetCode簡單題之計算字符串的數字和
clang 如何产生汇编文件
WordPress爱导航主题 1.1.3 简约大气网站导航源码网址导航源码
JS common array methods
dmp引擎工作总结(2021,光剑)
Interesting JS code
The third divisor of leetcode simple question
User manual of Chinese version of solidity ide Remix
华硕笔记本电脑重装系统后不能读取usb,不能上网
WordPress love navigation theme 1.1.3 simple atmosphere website navigation source code website navigation source code
岛屿的个数