JUC-线程的创建、运行与查看

创建和运行线程

Thread创建线程

Thread 创建线程方式:创建线程类,匿名内部类方式

  • start() 方法底层其实是给 CPU 注册当前线程,并且触发 run() 方法执行
  • 线程的启动必须调用 start() 方法,如果线程直接调用 run() 方法,相当于变成了普通类的执行,此时主线程将只有执行该线程
  • 建议线程先创建子线程,主线程的任务放在之后,否则主线程(main)永远是先执行完
public static void main(String[] args) {
    Thread t = new Thread(){
        public void run() {
            for (int i = 0; i < 100; i++) {
                System.out.println("子线程输出:" + i);
            }
        }
    };
    t.start();
    // main线程输出放在start之前,就一定会先输出main线程,因为是 main 线程驱动的子线程运行
    for (int i = 0; i < 100; i++) {
        System.out.println("main线程" + i);
    }
}

使用Runnable

public static void main(String[] args){
    Runnable r = new Runnable() {
        @Override
        public void run() {
            for (int i = 0; i < 10000; i++) {
                System.out.println("子线程输出:" + i);
            }
        }
    };
    Thread t1 = new Thread(r, "t1");
    t1.start();

    // 使用lambda表达式
    Runnable r2 = () -> System.out.println("lambda表达式");
    Thread t2 = new Thread(r2);
    t2.start();
}

Runnable 方式的优缺点:

  • 缺点:代码复杂一点。
  • 优点:
    • 线程任务类只是实现了Runnable接口,可以继续继承其他类,避免了单继承的局限性
    • 同一个线程任务对象可以被包装成多个线程对象
    • 适合多个多个线程去共享同一个资源
    • 实现解耦操作,线程任务代码可以被多个线程共享,线程任务代码和线程独立
    • 线程池可以放入实现 Runnable 或 Callable 线程任务对象

查看进程线程的方法

首先我们可以线运行下边的java程序:

package com.qcby.demo1;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Demo2 {
    public static void main(String[] args) {
        Runnable r = () -> {
            while(true){
                // 如果不想配置日志,就使用System.out.println("正在运行......");
                log.info("正在运行......");
            }
        };
        Thread t1 = new Thread(r, "t1");
        Thread t2 = new Thread(r, "t2");
        t1.start();
        t2.start();
    }
}

Windows

  • 任务资源管理器
  • tasklist查看进程
  • taskkill杀死进程
    ![[Pasted image 20240409215935.png]]在这里插入图片描述

使用下面指令可以杀死进程:

taskkill /F /PID 进程id

使用tasklist不太方便找到我们刚刚运行的java程序,我们使用jps来找他

![[Pasted image 20240409221305.png]]

Linux

  • ps -fe查看所有进程
  • ps -fT -p <PID>查看PID进程的所有线程
  • kill <PID>杀死进程
  • top动态的展示所有进程,可以看见cpu的占用情况
  • top -H -p <PID>查看PID进程的所有线程
    ![[Pasted image 20240409231118.png]]

Java

  • jps查看所有java进程
  • jstack <PID>查看某个java进行的所有线程状态(那一刻所有进程的详细状态)
    ![[Pasted image 20240409221505.png]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/530962.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【鸿蒙开发】组件状态管理@Prop,@Link,@Provide,@Consume,@Observed,@ObjectLink

1. Prop 父子单向同步 概述 Prop装饰的变量和父组件建立单向的同步关系&#xff1a; Prop变量允许在本地修改&#xff0c;但修改后的变化不会同步回父组件。当父组件中的数据源更改时&#xff0c;与之相关的Prop装饰的变量都会自动更新。如果子组件已经在本地修改了Prop装饰…

01-Git 快速入门

https://learngitbranching.js.org/?localezh_CN在线练习git 1. Git 安装好Git以后, 先检查是否已经绑定了用户名和邮箱 git config --list再检查C:\Users\xxx.ssh 下是否存在 id_rsa.pub , 存在的话复制其内容到 GitHub 的 SSH KEY 中 没有这一步, PUSH操作的时候会报错:…

Altair® (澳汰尔)Inspire™ Render —— 强大的 3D 渲染和动画工具

Inspire Render 是一种全新 3D 渲染和动画工具&#xff0c;可供创新设计师、建筑师和数字艺术家以前所未有的速度快速制作精美的产品演示。 借助基于物理特性的内置高品质全局照明渲染引擎 Thea Render&#xff0c;可以快速创建、修改和拖放各种材质并添加照明环境&#xff0c…

【JavaWeb】Day34.MySQL概述——数据库设计-DDL(一)

项目开发流程 需求文档&#xff1a; 在我们开发一个项目或者项目当中的某个模块之前&#xff0c;会先会拿到产品经理给我们提供的页面原型及需求文档。 设计&#xff1a; 拿到产品原型和需求文档之后&#xff0c;我们首先要做的不是编码&#xff0c;而是要先进行项目的设计&am…

Leetcode 538. 把二叉搜索树转换为累加树

心路历程&#xff1a; 二分搜索树 中序遍历&#xff0c;记住这一点即可&#xff1b; 两次遍历&#xff0c;第一次求和&#xff0c;第二次赋值即可 注意的点&#xff1a; 1、注意赋值的时候需要包含node.val&#xff0c;相当于包含i的后缀和 解法&#xff1a;DFS # Defini…

视帝餐厅生意亮红灯?50岁前TVB「电波少女」帮衬撑留港消费

现年50岁的前「电波少女」成员姚乐怡&#xff0c;2012年与商人吴俊匡结婚&#xff0c;2015年诞下一女吴芊憧&#xff08;Gaibe、乳名小鸡髀&#xff09;后淡出幕前&#xff0c;今积极拍片转型做「美食网红」。近年不时介绍香港地道美食&#xff0c;近日更以行动支持留港消费&am…

MySQL:关于数据库的一些练习题

文章目录 前面的内容已经把数据库的一些必要知识已经储备好了&#xff0c;因此下面就对于这些语句进行一些练习&#xff1a; 批量插入数据 insert into actor values (1, PENELOPE, GUINESS, 2006-02-15 12:34:33), (2, NICK, WAHLBERG, 2006-02-15 12:34:33);SQL202 找出所有…

【linux基础】bash脚本的学习:定义变量及引用变量、统计目标目录下所有文件行数、列数

假设目的&#xff1a;统计并输出指定文件夹下所有文件行数 单个文件可以用 wc -l &#xff1b;多个文件&#xff0c;可以用通配符 / 借助bash脚本 1.定义变量名&#xff0c;使用引号 a"bestqc.com.map" b"Anno.variant_function" c"enrichment/GOe…

代码签名证书是什么?软件签名证书功能和分类

代码签名证书是什么&#xff1f;代码签名证书&#xff08;Code Signing Certificate&#xff09;是用于对可执行文件或脚本&#xff0c;软件代码等进行数字签名&#xff0c;可验证软件发布者身份、保证软件签名后未被篡改&#xff0c;以此验证开发者身份的真实性和保护代码的完…

PostgreSQL入门到实战-第十弹

PostgreSQL入门到实战 PostgreSQL数据过滤(三)官网地址PostgreSQL概述PostgreSQL中OR操作理论PostgreSQL中OR实操更新计划 PostgreSQL数据过滤(三) 了解PostgreSQL OR逻辑运算符以及如何使用它来组合多个布尔表达式。 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列…

Node.js cnpm的安装

百度搜索 cnpm,进入npmmirror 镜像站https://npmmirror.com/ cmd窗口输入 npm install -g cnpm --registryhttps://registry.npmmirror.com

Vue.js前端开发零基础教学(五)

目录 4.1 动态组件 4.1.1 定义动态组件 4.1.2 利用KeepAlive组件实现组件缓存 4.1.3 组件缓存相关的生命周期函数 4.1.4 KeepAlive组件的常用属性 4.2 插槽 4.2.1 什么是插槽 ​编辑 4.2.2 具名插槽 4.2.3 作用域插槽 4.3 自定义指令 4.3.1 什么是自定义指令…

LLM大语言模型(十):LangChain自定义Agent使用自定义的LLM

背景 独立部署ChatGLM3-6B并提供HTTP API能力。 自定义LLM封装对ChatGLM3-6B的访问。 创建一个简单的Agent来使用自定义的LLM。 自行封装LLM&#xff08;MyChatGLM&#xff09; 上一篇文章LLM大语言模型&#xff08;九&#xff09;&#xff1a;LangChain封装自定义的LLM-C…

基于SSM+Jsp+Mysql的个性化影片推荐系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

[数据结构]栈和队列结构的简单制作

一、栈 1.1栈的概念以及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原…

Vant DropdownMenu 下拉菜单带搜索功能

Vant DropdownMenu 下拉菜单带搜索功能 效果图&#xff1a; 上代码&#xff1a; <van-dropdown-menu active-color"#E33737"><van-dropdown-item ref"dropdownItem"><template #title><span>{{ dropdownItem.text }}</span…

蓝桥杯2022年第十三届省赛真题-最少刷题数

solution&#xff08;通过50%&#xff09; 忽略了存在分数相同的情况&#xff0c;若从p位置开始有若干个相同分数的无需再多刷&#xff0c;但是在p位置前若干个&#xff08;含p位置&#xff09;分数相同则都需要多刷一道题。 #include<iostream> #include<algorithm…

运动想象 (MI) 分类学习系列 (7) :CMO-CNN

运动想象分类学习系列:CMO-CNN 0. 引言1. 主要贡献2. 提出的算法3. 数据增强策略4. 结果4.1 学科内分类4.2 跨学科分类4.3 数据增强策略4.4 网络可视化4.4.1 短连接可视化4.4.2 滤波器可视化4.4.3 中间特征的可视化 5. 总结欢迎来稿 论文地址&#xff1a;https://www.sciencedi…

金铲铲单机版含教程,仅支持S1\S6\S11赛季

金铲铲单机版&#xff0c;官方的单机版&#xff0c;支持S3/S6/S11赛季&#xff0c; 我自己玩了两把&#xff0c;可以加金币/加血/设置GM权限等&#xff0c; 我猜测是开发者测试版本&#xff0c; 金铲铲单机版含教程&#xff0c;仅支持S1\S6\S11赛季 网盘自动获取 链接&#xff…

实现WAF对CC攻击的零误封防护:关键技术解析与实践

一、引言 Web应用防火墙&#xff08;WAF&#xff09;作为网站安全的重要防线&#xff0c;其在防御CC&#xff08;Challenge Collapsar&#xff0c;即挑战黑洞&#xff0c;一种分布式拒绝服务攻击&#xff09;攻击中的效能至关重要。然而&#xff0c;精准识别并有效拦截CC攻击的…