• 多线程


    进程线程和线程的概念
    进程:
           在windows中,每一个打开运行的应用程序或后台程序,比如运行中的QQ、谷歌浏览器、网易云音乐、资源管理器等都是一个进程
      我们都知道程序,一个程序是静态的,通常是存放在外存中的。而当程序被调入内存中运行后,就成了进程。 
           顾名思义,进程就是进行中的程序,它是个动态的概念。是系统进行资源分配与调度的基本单位.
      
          独立性: 进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自
          己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他
          进程的地址空间。
          动态性: 进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中
          活动的指令集合。在进程中加入了时间的概念。进程具有自己的生命周期和各种不同的状态,
          这些概念在程序中都是不具备的。
          并发性: 多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。

    线程:线程就是进程中执行运算最小的单位.
    继承Threa类创建多线程
      1.建类>>继承Thread类>>重写run方法
      2.Thread.currentthread().getName():  获取线程名称
      3.start();[启动线程] 
     
     注:开启多个线程是交替执行的
      4.直接调用run方法
      a.只有主线程一条执行路径
      b.依次执行两次run方法
    案例:
      
    public class MyThread extends Thread {
        
        public void run() {
            for (int i = 0; i < 5; i++) {
                System.out.println(i + 1+Thread.currentThread().getName());
            }
        }
    
    }

    启动线程:

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            MyThread t1 = new MyThread();
                t1.start();
                
        }          

    结果:
    实现Runnable接口创建多线程

     a.定义一个Runnable接口的实现类 (类名 implems Runnable)

       

    b.重写Run方法

    c.创建线程对象Runnable 类名 =new  Runnable ();

     Thread 对象名称=new Therad(类名,"线程名称");

     d.启动线程 start();

     e.继承Therad类和实现Runnable接口的区别

       继承:编写简单缺点继承的单根性

       接口:避免单继承,便于资源共享

       推荐使用实现Runnable接口

    案例:

    public class MyRunnable implements Runnable {
    
        @Override
        public void run() {
            
            System.out.println("我是接口实现多线程");
            
        }
    }

    启动线程:

        public static void main(String[] args) {
            MyRunnable mr = new MyRunnable();
            Thread t2 = new Thread(mr);
            t2.start();
        }

    Thread类的常用方法

      

     

      部分方法的演示

      

     线程的五种状态

       当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线
       程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked) 和死
       亡(Dead) 五种状态。尤其是当线程启动以后,它不能一直“霸占”着CPU 独自运行,所以CPU 需
       在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。
       如图:

      

  • 相关阅读:
    罗振宇 知识就是力量之怎样做一个不冲动的人
    C++中stl的map
    stl中顺序性容器,关联容器两者粗略解释
    stl之容器、迭代器、算法几者之间的关系
    mysql技术内幕之常规使用
    essential c++ 第一章 array及vector相关使用
    由函数clock想到的
    编程获得CPU的主频
    Markdown 基本语法
    Future FutrueTask Callable类源码说明以及原理使用
  • 原文地址:https://www.cnblogs.com/yzwss/p/8541241.html
Copyright © 2020-2023  润新知