zoukankan      html  css  js  c++  java
  • 多线程

    1.什么是多线程

    多线程是进程中执行的最小单位,可完成一个独立的顺序流程。每个进程中,必须至少建立一个线程(这个线程名称为主线程)来作为这个进程运行的入口点。

    进程

    进程(Pricess)是程序的一次动态执行过程,它对应了代码的加载执行至执行完毕·的一个完整过程,这个过程也是进程从本身产生,发展至消亡的过程。

    进程的特点

    进程是系统运行程序的基本单位。

    每一个进程都有自己的独立的一块空间,一组系统资源。

    每一个进程的内部数据和状态都是全部完全独立的

    多线程的好处

    1.从分利用CPU的资源:执行单线程的程序时,如程序发生阻塞,CPU可能存在空闲状态,这将造成了计算机的资源浪费,而使用多线程可以在线程休眠的时候取运行其他线程,

    这样可以打打提高资源利用率。

    2.简化编程模型:一个即长又复杂的进程可以考虑分为多个进程,成为几个独立的运行部分。

    3.带来良好的用户体验:由于多个线程可以交替执行,减少了避免因程序阻塞或意外情况造成的响应过慢现象,降低了用户等待的机率。

    Tread类极其常用的方法                                          

    构造方法                                                                           说明

    Tread()                                                                             分配新的Tread对象

    Tread(Runnable   target)                                                  分配新的Tread对象,target为run()方法调用的对象         

    Treeab(Runnable,target,String  name)                              分配新的Tread对象,target为run()方法调用的对象,nam为新线程的名称

    线程的优先级

    当同一时刻有一个或多个线程处于运行状态时,他们需要排队等待CPU资源,每个线程会自动获得一个线程的优先级(Priority),优先级的高低反应线程的重要紧急程度。

    那么此刻,一般优先级高的有先获得CPU的几率较大,但是这个结果不绝对,线程优先级调度是一个复杂的过程。

    线程的优先级用1-10表示,1表示优先级最低,10表示优先级最高默认值是5,这些优先级对应一个Tread类的公用静态常量。

    线程的休眠:

    在程序中允许定义一个线程进行暂时休眠,直接用Tread.Sleep()方法即可以实现线程

    sleep()方法定义语法如下:

    public  static  void sleep(long  millis)

    sleep()方法会让当前线程休眠(停止执行)millis毫秒,线程由运行到不可运行状态,睡眠时间过后线程将再次进入运行状态,调用sleep()方法需处理InterruptedException异常

    示例:

    public class ThreadDemo{
      public static void main(String[] args){
        System.out.print("Wait");
         Wait.bySec(5);       //让主线程等待5秒
                System.out.print("Start");
    }
    }

    Wait类

    public class Wait{
     public static void main(String [] args){
      for (int i = 0; i <s; i++) {
            System.out.print(i+1+"秒");
               try {
                Traed.sleep(1000);
            } catch (Exception e) {
                e.printStackTrace();
            }        
                    
                }
    
    }
    
    }

     

     

    多线程的状态流程图

     

  • 相关阅读:
    Java 报错 -source 1.5 中不支持 diamond 运算符
    MacBook Java开发环境的配置
    MacBook 版本控制工具
    版本控制工具 Git SourceTree SSH 连接码云
    接口 请求https接口
    快递 共享电子面单
    快递 已发货订单重新打印电子面单
    SQL Server 分部分项导入后 数据的修改
    Hive数据的存储以及在centos7下进行Mysql的安装
    Hive初体验
  • 原文地址:https://www.cnblogs.com/864466244qq/p/8556420.html
Copyright © 2011-2022 走看看