计算机网络——创建线程方法(第二章节)

一、创建线程代码讲解

     

把上述代码改成while(true)会发生什么呢?

可以看见,这两个while循环再“同时执行”,看到的结果,是两边的日志都在交替打印,每个线程都是一个独立执行的逻辑(独立的执行流)

并发执行这个地方需要听一下

把t.start改成t.run此时会发生什么?

此时,代码中不会创建新的线程,只有一个主线程,这个主线程里面只能依次执行循环,执行完一个循环再执行另一个。

main这个线程是JVM自动创建的。和其他线程相比,没啥特殊的一个java进程中,至少会有一个main线程。

二、观察多线程情况的软件

多线程程序运行的时候,可以使用IDEA或者jconsole来观察到该进程里的多线程情况

idea对于新手不友好,以调试模式启动程序会有一个专门的窗口,查看方法的调用栈在这里看到所有线程的信息。

对于新手使用jconsole.exe

1.启动软件之前,确保你idea中的程序已经跑起来了。

2.有些同学可能需要使用管理员方式运行。(如果打开什么也不显示就需要用到管理员运行)

首先确保程序启动

然后打开jconsole.exe,这个软件存在于jdk/bin目录

然后双击进入

点中我们需要观察的进程并点击连接

点中不安全连接

然后点击线程,这时我们就可以看见这个进程的所有线程

三、sleep的使用

当前这两线程,while循环转的太快了,希望让它慢点

四、Thread类的其他用法,创建线程,其他的用法。

1.继承Thread,重写run

2.实现Runnable,重写run

3.继承Thread,重写run,但是使用匿名内部类

4.实现Runnable,重写run,也是使用匿名类部类

另一种方式的书写

5.基于lambda表达式

面试题:java中创建线程还有其他方法吗?后面还会介绍到。

五、关于Thread的其他使用方法

true和线程开始这俩日志谁先打印不一定。线程是并发执行的。并发调度顺序不确定。取决于系统的调度器。(大家如果自己尝试,大概率实现打印true,因为调用strat之后,新的线程被创建也是有一定开销的,创建过程中,主线程就执行println)

这是一个概率问题当然无法排除极端情况,主线程正好卡了下,使新线程的日志先打印...

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值