• Java之进程与线程


    一、进程

    这里写图片描述

    二、线程

    1.定义及特点

    1)【定义】线程是一个进程内部的一条执行路径,Java虚拟机允许应用程序并发地运行多个执行路径

    是系统独立调度和分派【CPU】的基本单位

    2)特点

    进程中执行运算的最小单位
    处理机分配给线程,即真正在处理机上运行的是线程
    

    2.主线程和子线程

    这里写图片描述

    3.子线程对象调用run() 和调用start()的区别

    1 run() 相当于方法调用 ,不会创建新的栈空间,不会有新的子线程 
    2 start() 开辟新的栈空间,会产生新的子线程  , 再帮助调用run方法执行
    

    4.多线程

    多线程就是在一个进程中创建多个线程,每个线程完成一个任务

    优点

        多线程技术使程序的响应速度更快
        提高资源利用率
        程序设计更简单
    

    特点

        随机性(异步执行):谁抢到cpu,谁执行
        宏观上同时执行,微观上同一时刻只能执行一个线程(多核除外)
    

    5.进程和线程区别

    1)进程有独立的地址空间,一个进程崩溃后,不会对其它进程产生影响,而线程只是一个进程中的不同执行路径
    
    2)线程有自己的栈和局部变量,多个线程共享同一进程的地址空间
    
    3)一个进程至少有一个线程
    

    6.Java中创建线程

    两种创建方法:

    1)第一种:继承Thread类
    2)第二种:实现Runnable接口
    

    创建步骤

        1.定义线程
        2.创建线程对象
        3.启动线程
        4.终止线程
    

    两种创建方法比较

    1继承Thread 
        适合每个线程是独立执行,没有资源共享
    
    2实现Runnable
        适合存在资源共享情况,要和Thread类结合使用
    
        资源共享分两种情况
            a.相同操作,同一个资源:操作代码和资源同一个类中,并实现Runnable接口
    
            b.不同操作,同一个资源:资源单独一个类,操作分别在不同类中,并实现Runnable接口
    

    7.线程五种状态

    新生状态、可运行状态、运行状态、阻塞状态和死亡状态

    这里写图片描述

    8.线程调度

    这里写图片描述

    1)线程调度的方法

    join()方法

    阻塞指定的线程等到另一个线程完成以后再继续执行
    public final void join();
    public final void join(long mills);
    public final void join(long mills,int nanos);
    实现的效果:调用join()_方法的线程对象会插队到当前线程的前面(即先执行)
    

    sleep()方法

    当前线程在指定毫秒内停止执行而转入不可运行状态
    public static void sleep(long millis); 
    

    yield()方法

    当前线程转入暂时停止运行的状态
    public static void yield();
    

    2)sleep()与yield()的区别

    这里写图片描述

    9.线程终止

    1.标志位,可以使run()方法正常执行完
    2.stop()方法强行终止线程【不推荐】
    3.interrupt()方法通过抛异常的方式 打断线程的执行
    

    10.其他

    【获取当前线程名字】Thread.currentThread().getName() (通用)
    子类线程中可直接使用getName()获取当前线程名称
    【线程命名】调用Thread类中的setName 改变线程的名字
    
  • 相关阅读:
    leetcode-mid-array-5. Longest Palindromic Substring
    leetcode-mid-array-334 Increasing Triplet Subsequence-NO
    leetcode-mid-array-3 Longest Substring Without Repeating Characters
    leetcode-mid-array-49 Group Anagrams
    leetcode-mid-array-73 set matrix zeros
    leetcode-mid-array-31 three sum-NO
    ANOVA-方差分析和单尾方差分析
    MTLD -词汇复杂度的指标
    shell脚本-2
    from __future__ import
  • 原文地址:https://www.cnblogs.com/TCB-Java/p/6797622.html
Copyright © 2020-2023  润新知