zoukankan      html  css  js  c++  java
  • 【线程系列一】线程如何运行

     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使用的为抢占式调度。

  • 相关阅读:
    Asp.net操作Excel----NPOI
    Python第一模块
    Sping笔记一览
    IO流技术一览
    事务技术一览
    日常问题记录
    分页与JDBC显示文档。
    分页技术与JDBC一览
    JDBC 技术开发
    MYSQL
  • 原文地址:https://www.cnblogs.com/chenjfblog/p/7868897.html
Copyright © 2011-2022 走看看