• Java学习|多线程学习笔记


    什么是线程?
        可以理解为进程中独立运行的字任务。
     
    使用多线程:
        1.继承Thread类:从源码可以看到,Thread累实现了Runnable接口。
            如果多次调用start()方法,会出现异常Exception in thread “main” java.lang.IllegalThreadStateException
        2.实现Runnable接口
        在某些JVM中,i--分为如下三步:
            A.取得原有i值
            B.计算i-1
            C.对i进行赋值
        多线程同时访问,会出现非线程安全问题
        println()方法内部是同步的。
        
        currentThread()方法:可以返回代码正在被哪个线程调用。
        isAlive()方法:判断当前线程是否处于活动状态。
            活动状态:已经启动尚未终止。
        sleep()方法:使当前正在执行的线程休眠指定毫秒数。
            this.currentThread()方法返回的线程。
        getId()方法:获得线程的唯一标识。
     
    停止线程:
        Thread.interrupt()方法:停止线程时使用。
            不能马上停止,做停止标记,当前线程的方法执行完以后停止。
        this.interrupted()方法:
            测试当前线程是否是已中断状态,执行完清除状态标志为false
        this.isInterrupted()方法:
             测试当前线程是否是已中断状态,不清除状态标志
        this.stop()方法:
            暴力停止线程,已废弃,不推荐使用。
            会抛出异常,但不需要捕获。
        使用return配合interrupt()也可以停止线程。
        注意:
            建议使用抛异常的方法来终止线程,因为可以在catch代码块中处理异常。
     
        Thread.yieId()方法:
            使当前线程放弃cpu资源,重新分配。
            放弃时间不确定,有可能刚放弃,马上又获得。
        线程的优先级:
            一般来说,优先级较高的线程得到的资源较多。
            setPriority():设置线程优先级。
            Java中优先级分为1~10,10个等级,小于1或者大于10都会抛出异常。
            Jdk中有3个预定义的优先级,1,5,10
     
        优先级的继承性:
            A线程启动b线程,b线程的优先级和a线程是一样的
            
        守护线程:
            守护线程具有陪伴意义,当java中不存在非守护线程,那么守护线程也就销毁了
            垃圾回收线程就是一个守护线程。
            
        synchronized()同步方法:
            非线程安全问题存在于实例变量中,局部变量不存在。
            方法内部的变量是线程私有的。
            当多个线程访问多个对象,jvm会创建多个锁。
  • 相关阅读:
    01 Vue的起步和插值表达式
    06 扩展的对象的功能
    05 解构赋值
    04 函数之扩展运算符、箭头函数
    03 函数之默认值、剩余参数
    02 模板字符串
    01 let和const命令
    28 Bootstrap排版
    27 Bootstrap的列偏移
    26 Bootstrap的栅格系统
  • 原文地址:https://www.cnblogs.com/wangzepu/p/9790625.html
Copyright © 2020-2023  润新知