Java并发(三)----创建线程的三种方式及查看进程线程 环球速讯

一、直接使用 Thread
// 创建线程对象Thread t = new Thread() {  public void run() {    // 要执行的任务   }};// 启动线程t.start();

例如:

// 构造方法的参数是给线程指定名字,推荐Thread t1 = new Thread("t1") {  @Override  // run 方法内实现了要执行的任务  public void run() {    log.debug("hello");   }};t1.start();

输出


(资料图片)

19:19:00 [t1] c.ThreadStarter - hello

注意:这里通过@Slf4j注解打印的日志

二、使用 Runnable

把【线程】和【任务】(要执行的代码)分开

Thread 代表线程

Runnable 可运行的任务(线程要执行的代码)

Runnable runnable = new Runnable() {  public void run(){    // 要执行的任务   }};// 创建线程对象Thread t = new Thread( runnable );// 启动线程t.start(); 

例如:

// 创建任务对象Runnable task2 = new Runnable() {  @Override  public void run() {    log.debug("hello");   }};​// 参数1 是任务对象; 参数2 是线程名字,推荐Thread t2 = new Thread(task2, "t2");t2.start();

输出

19:19:00 [t2] c.ThreadStarter - hello

Java 8 以后可以使用 lambda 精简代码

// 创建任务对象Runnable task2 = () -> log.debug("hello");​// 参数1 是任务对象; 参数2 是线程名字,推荐Thread t2 = new Thread(task2, "t2");t2.start();

小结

方法1 是把线程和任务合并在了一起,方法2 是把线程和任务分开了

推荐使用用 Runnable,因为 更容易与线程池等高级 API 配合

用 Runnable 让任务类脱离了 Thread 继承体系,更灵活

三、FutureTask

FutureTask (未来任务)能够接收 Callable 类型的参数,用来处理有返回结果的情况

// 创建任务对象FutureTask task3 = new FutureTask<>(() -> {  log.debug("hello");  Thread.sleep(2000);  return 100;});​// 参数1 是任务对象; 参数2 是线程名字,推荐new Thread(task3, "t3").start();​// 运行到这里主线程阻塞,会同步等待 task 执行完毕的结果Integer result = task3.get();log.debug("结果是:{}", result);

输出

19:22:27 [t3] c.ThreadStarter - hello19:22:29 [main] c.ThreadStarter - 结果是:100

可以看到两秒后主线程返回结果

四、观察多个线程同时运行

主要是理解

交替执行

谁先谁后,线程的执行不由我们控制

代码

public static void main(String[] args) {    new Thread(() -> {      while(true) {        log.debug("running");       }     },"t1").start();    new Thread(() -> {      while(true) {        log.debug("running");       }     },"t2").start();   }

结果

可以看到,线程是交替运行的。但是谁先谁后不是我们控制的。但是如果是单核CPU的话运行这段程序的话,只会有一个线程开始运行。

五、查看进程线程5.1 windows

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

控制台tasklist查看进程

控制台taskkill /F /PID pid编号杀死进程

5.2 linux

ps -fe查看所有进程

ps -fe | grep 关键词查看所有进程

ps -fT -p 查看某个进程(PID)的所有线程

kill杀死进程

top按大写 H 切换是否显示线程

top -H -p 查看某个进程(PID)的所有线程,可持续查看线程的状态

5.3 Java

jps命令查看所有 Java 进程

jstack 查看某个 Java 进程(PID)的所有线程状态 ,只能查看某一刻某个进程所有线程较详细的状态

jconsole来查看某个 Java 进程中线程的运行情况(图形界面)

如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole 即可;如果从 GUI shell 启动,找到 JDK 安装路径,打开 bin 文件夹,双击jconsole  jconsole 远程监控配置

需要以如下方式运行你的 java 类

java -Djava.rmi.server.hostname=`ip地址` -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=`连接端口` -Dcom.sun.management.jmxremote.ssl=是否安全连接 -Dcom.sun.management.jmxremote.authenticate=是否认证 java类

修改 /etc/hosts 文件将 127.0.0.1 映射至主机名

如果要认证访问,还需要做如下步骤

复制 jmxremote.password 文件

修改 jmxremote.password 和 jmxremote.access 文件的权限为 600 即文件所有者可读写

连接时填入 controlRole(用户名),R&D(密码)

这种方式了解一下即可。对于生产环境一般没有权限访问的。

标签:

最近更新

Java并发(三)----创建线程的三种方式及查看进程线程 环球速讯
2023-04-25 00:44:18
《小美人鱼》女主游览动物园晒真人照引争议 还被吐槽像猩猩_全球看点
2023-04-25 00:37:48
今日看点:目颜护肤品适合什么年龄用?_新面孔化妆品适合多少年龄的人使用
2023-04-24 23:59:39
信息量大!房贷利率要上调?央行回应:对楼市管冷也管热 每日焦点
2023-04-24 23:42:17
为什么会咳嗽咳的喘气都喘不过来_为什么会咳嗽-环球动态
2023-04-24 23:13:13
焦点关注:给“直播式调研”点赞
2023-04-24 23:04:46
中国轻工业联合会预制食品分会成立 18家企业单位获授牌
2023-04-24 22:30:25
关于自由的名人素材事例 关于自由的素材_天天快报
2023-04-24 22:03:23
破局!广州两大旧改项目有新进展,越秀携300亿杀入?|热推荐
2023-04-24 21:51:04
为了光荣和梦想!这是中国航天人的日常
2023-04-24 21:49:15
当前热讯:联通办了一个号总收听到奇怪的手机语音 大姐记挂半年多
2023-04-24 21:06:09
金鼎资本&新特电气:新能源赛道投资价值逐渐显现,产业发展面临新挑战
2023-04-24 21:12:57
在莫斯科郊外的晚上国语(在莫斯科郊外的晚上)
2023-04-24 20:31:25
传化智联:拟发行可转债不超过约 41.44 亿元
2023-04-24 20:04:57
郑智以中乙球员身份被征召进入国奥队 开启精彩的足球生涯-世界播报
2023-04-24 19:33:45
宣城市教育局开展“老有所学”行动调研
2023-04-24 19:40:29
全球最新:值班记录内容怎么写范文_值班记录内容怎么写
2023-04-24 19:10:47
【大国基理】行走在村间山头的“背包法庭”|焦点速递
2023-04-24 18:46:33
当前简讯:“带着我的梦想上天宫!”中国空间站期待你的来信
2023-04-24 18:41:11
鱼得了水霉病怎么治最快_鹦鹉鱼变白怎么回事 环球简讯
2023-04-24 18:00:32
“高速飞车”未来运行速度将达每小时1000公里
2023-04-24 17:56:54
AMD Radeon RX 7700/7600 显卡即将发布,各大AIC备战台北电脑展
2023-04-24 17:07:27
太平人寿三分钟快速理赔 客户感谢信表达谢意
2023-04-24 17:03:13
热点!如何提高学历园林专业的自报考重要还是经验重要
2023-04-24 16:29:23
焦点速递!世界地球日:海信激光电视创新技术受关注
2023-04-24 16:40:57
员工离职赔偿协议书怎么写_员工离职赔偿协议|当前讯息
2023-04-24 15:43:21
每日热门:马斯克评论称赞中国高铁的推文:“True” 引发不少网友共鸣
2023-04-24 15:29:55
温州湾新区正式挂牌成立 为浙江第七个省级新区
2023-04-24 15:16:45
每日速看!天门市离婚债务纠纷律师收费要多少
2023-04-24 14:58:21
挪威央行抛售北摩高科背后,谁在“抄底”? | 公司观察 精选
2023-04-24 14:49:35