zoukankan      html  css  js  c++  java
  • 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会创建多个锁。
  • 相关阅读:
    设计模式之适配器模式(Decorator)
    可复用面向对象软件的基础
    dpkg命令的用法
    UML类图几种关系的总结
    Java多线程并发编程之原子变量与非阻塞同步机制
    Java内部类总结
    多线程并发编程之构建自定义同步工具
    多线程并发编程之显示锁ReentrantLock和读写锁
    多线程并发编程之变量
    汇编语言学习系列 冒泡排序实现
  • 原文地址:https://www.cnblogs.com/wangzepu/p/9790625.html
Copyright © 2011-2022 走看看