ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA并发编程-02-Java线程

2021-03-04 15:03:12  阅读:97  来源: 互联网

标签:02 Java Thread 查看 线程 进程 方法


JAVA线程

创建和运行线程方式

方法一:继承Thread类,重写run方法
方法二:实现Runnable接口,把对象传入Thread。把【线程】和【任务】分开
原理区别:方法一是子类重写了Thread类的run方法,然后执行。
在这里插入图片描述
方法二把runnable类的target实例传给Thread类,执行了自己的任务。
在这里插入图片描述
总结:

推荐用runnable接口。

  • 方法1 是把线程和任务合并在了一起,方法2 是把线程和任务分开了 用
  • Runnable 更容易与线程池等高级 API 配合用
  • Runnable 让任务类脱离了 Thread 继承体系,更灵活

查看进程线程的方法

Windows

  • 任务管理器可以查看进程和线程数,也可以用来杀死进程
  • tasklist 查看进程
  • taskkill 杀死进程

Linux

  • ps -fe 查看所有进程
  • ps -fT -p 查看某个进程(PID)的所有线程
  • kill 杀死进程
  • top 按大写 H 切换是否显示线程
  • top -H -p 查看某个进程(PID)的所有线程

JDK自带

  • jps 命令查看所有 Java 进程
  • jstack 查看某个 Java 进程(PID)的所有线程状态
  • jconsole 来查看某个 Java 进程中线程的运行情况(图形界面)

线程运行原理

栈与栈帧

Java Virtual Machine Stacks (Java 虚拟机栈)
我们都知道 JVM 中由堆、栈、方法区所组成,其中栈内存是给谁用的呢?其实就是线程,每个线程启动后,虚拟机就会为其分配一块栈内存。

  • 每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存
  • 每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法
    代码与图示
    在这里插入图片描述
    当运行到method1里sout(m)前的栈帧图示,程序计数器用来记录代码执行到哪行
    在这里插入图片描述
    当多个线程同时运行时,每个线程有自己独立的栈内存,里面有自己的栈帧,相互之间互不干扰
    在这里插入图片描述

标签:02,Java,Thread,查看,线程,进程,方法
来源: https://blog.csdn.net/weixin_44415432/article/details/112911147

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有