zoukankan      html  css  js  c++  java
  • 【幻化万千戏红尘】qianfengDay21-java基础学习:进程、线程、Timer

    课程回顾:

    面向对象
    数组
    异常
    常用类
    集合
    IO流


    今日内容:
    进程:应用程序运行时,产生的
    独立的应用程序,拥有独立的代码和存储空间
    多进程:操作系统可以并发的执行多个进程
    线程:进程内部的一条执行路径
    多线程:java语言支持程序内部进行多线程开发

    进程内部可以有多个线程
    线程的作用:
    可以分担压力,提高性能
    主要用来完成耗时操作

    java中线程的创建方式:
    1、继承Thread类,并重写run方法
     拥有线程类的方法
    2、实现Runnable接口,并重写run方法
     没有线程类的方法

    2种启动方式的区别?
    继承Thread:
    1、不能再继承其他类
    2、操作简单
    实现Runnable接口:
    1、可以继承
    2、保持风格一致
    3、操作复杂
    4、可以共享数据

    线程的启动只能通过start方法,不能通过run方法
    注意:线程只有start之后才能参与CPU的抢占,谁能抢到是随机的
    如果调用run,那么就相当于调用一个普通类中方法一样,对应线程还是会阻塞
    线程抢占CPU是随机的

    练习:请创建子线程,完成以下工作:输出1000以内的能被3整除,但是不能被5整除的数字
    在主线程输出100句:我要努力


    线程的常用方法:
    start:启动线程
    currentThread:获取当前正在运行的线程
    getName:获取线程名称
    setName:设置线程名称
    isDaemon:验证是否守护线程
    setDaemon:设置是否为守护线程
    getPriority:获取优先级
    setPriority:设置优先级
    getState:获取线程状态
    join:加入
    sleep:睡眠
    yield:礼让

    用户线程和守护线程:
    用户线程:java默认创建的饿线程都是用户线程,不受其他线程的干扰
    守护线程:有守护的用户线程,当用户线程结束的时候,对应的守护线程也会跟着结束
    isDaemon:验证是否为守护线程
    setDaemon:设置是否为守护线程,默认false

    优先级:就是线程抢占CPU的概率
    优先级高的,抢占CPU的概率更高
    反之概率更低
    优先级范围:1到10
    1最低,10最高
    MAX_PRIORITY:最大优先级
    MIN_PRIORITY:最小优先级
    NORM_PRIORITY:默认的优先级
    setPriority:设置优先级
    getPriority:获取优先级


    优先级的故事:
    CPU---皇帝

    皇后:10
    贵妃:7
    嫔妃:5
    贵人:3
    丫鬟:1


    线程调度:可以修改线程状态的方法
    1、sleep:睡眠,休眠
    静态方法,让当前线程由运行进入到阻塞,直到休眠时间结束才进入就绪参与CPU的抢夺
    这种引起的阻塞不会释放资源,但是会释放CPU的所属权


    2、join:加入,插入
    对象方法
    在A线程中调用B线程的join方法,带来的效果:
    A线程会进入到阻塞,直到B线程执行完成以后,A线程才能进入就绪参与CPU的抢夺

    3、yield:礼让,释放
    静态方法
    让当前正在运行的线程释放CPU(运行变为就绪),此时所有就绪状态的线程共同抢占CPU


    线程生命周期:就是线程的状态
    1、新建--New
    2、就绪--RUNNBABLE
    3、运行--RUNNING
    4、阻塞--BLOCKEDWAITINGTIMED_WATITING
    5、死亡--TERMINATED
    只有处于就绪状态的线程,才可以参与CPU的抢夺
    getState:获取线程的状态


    枚举:一种数据类型,一种特殊的类
    可以将同种类型的数据,定义造枚举中,用作新的数据类型使用
    enum
    格式:修饰符 enum 枚举名{
     枚举值,枚举值,……;
    }
    枚举可以使用在switch


    java扩展之定时器:Timer
    可以重复或延迟执行一些事情

    常用方法:
    schedule:计划
    参数说明:
    第一个参数:TimerTask抽象类,需要继承并重写run方法,规定需要重复或延迟执行的事情
    第二个参数:延迟的时间,单位毫秒
    第三个参数:重复执行的间隔,单位毫秒
    cancel:取消

    明天:线程安全


     

  • 相关阅读:
    《深入理解 Java 虚拟机》读书笔记:线程安全与锁优化
    《深入理解 Java 虚拟机》读书笔记:Java 内存模型与线程
    《深入理解 Java 虚拟机》读书笔记:晚期(运行期)优化
    《深入理解 Java 虚拟机》读书笔记:早期(编译期)优化
    《深入理解 Java 虚拟机》读书笔记:虚拟机字节码执行引擎
    《深入理解 Java 虚拟机》读书笔记:虚拟机类加载机制
    Java学习书籍推荐
    IntelliJ IDEA之新建项目后之前的项目不见了
    剑指Offer之左旋转字符串
    剑指Offer之和为S的两个数字
  • 原文地址:https://www.cnblogs.com/weigongcheng/p/5759864.html
Copyright © 2011-2022 走看看