【线程系列一】线程如何运行

 main函数开启一个新线程,在内存中的过程

 public static void main(String[] args)throws Exception {
         Thread th= new Thread(new MyRunnable("hello1"));
         th.start();
         System.out.println("当前主线程 "+Thread.currentThread().getName()); 
         System.out.println("该线程 "+th.getName());
 }
复制代码

 

上述代码,在内存中的状态如下图所示。执行步骤主要是下面四步。

1、运行上述java文件,由虚拟机执行类的入口main函数,分配了一个主线程。

2、main方法在主线程所在栈中,压栈,实例一个新的子线程,并开启了这个子线程

3、jvm给子线程分配了一块子线程栈,并在这个子线程栈中,将run()压栈执行。

4、由cpu调度各线程,分配给各线程的时间,由cpu决定,有两种模式,分时调度和抢占调度。

                  

cpu对线程的调度方式 

~分时调度

所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。

~抢占式调度

优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。

 

转载于:https://www.cnblogs.com/chenjfblog/p/7868897.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值