• java多线程学习笔记——简单


    进程:程序(任务)的执行过程——动态性。

    持有资源(共享内存,共享文件)和线程。

    线程:线程是系统中最小的执行单元,统一进程中有多个线程,线程共享进程的资源。

    线程交互:互斥与同步。

    注意:多线程是异步的,所以千万不要把Eclipse里代码的顺序当成线程执行的顺序,线程被调用的时机是随机的。

    java对线程的支持:

    class Thread    interface Runnable    共同的run方法

    线程的创建和启动:

    线程常用方法:

    如何停止线程:

             java中有三种方法可以终止正在运行的线程:

                       1、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。

                       2、使用stop方法强行终止线程,但是不推荐这个使用方法,因为stop和suspend及resume一样,都是作废过期的方法,使用它们可能产生不可预料的结果。

                       3、使用interrupt方法中断线程。

             停止不了的线程:

                       调用interrupt()方法停止线程,当interrupt()方法的使用效果并不像for+break语句那样,马上就停止循环。调用interrupt()方法仅仅在当前线程中打了一个停止的标记,并不是真的停止线程。

                      

             判断线程是否是停止状态:

                       java的SDK中,Thread.java类里边提供了两种方法:

                                1、this.interrupted():测试当前线程是否已经中断。

                                2、this.isInterrupted():测试线程是否已经中断。

                                区别:测试当前线程是否已经中断,当前线程是指运行this.interrupted()方法的线程(static方法)。this.interrupted():测试当前线程是否已经是中断状态,执行后具有将状态标志清除为false的功能。this.isInterrupted():测试线程Thread对象是否已经是中断状态,但不清除状态标志。

             异常法

             在沉睡中停止

             暴力停止(注意stop()与java.lang.ThreadDeath异常,释放锁的不良后果)。

             使用return停止线程。

             暂停线程(suspend暂停线程与resume恢复线程的执行),缺点:独占、不同步。

             yield方法:放弃当前的CPU资源,将让给其他的任务去占用CPU执行时间。但放弃的时间不确定,有可能刚刚放弃,马上又获得CPU时间片。

             线程的优先级:设置线程的优先级使用setPriority()方法,线程的优先级分为1—10这10个等级,如果小于1或者大于10,则JDK抛出异常throw new IllegalArgumentException。

             线程优先级的继承特性:A线程启动B线程,则B线程的优先级与A是一样的。

             优先级具有规则性:高优先级的线程总是大部分先执行完,但不代表高优先级的线程全部先执行完。

    守护线程:

             java线程中有两种线程,一种是用户线程,另一种是守护线程。守护线程是一种特殊的线程,他的特性有“陪伴”的含义,当进程中不存在非守护线程了,则守护线程自动销毁。典型的守护线程就是垃圾回收线程,当进程中没有非守护线程了,则垃圾回收线程也就没有了存在的必要了,自动销毁。即:任何一个守护线程都是整个JVM中所有非守护线程的“保姆”,只要当前JVM实例中存在任何一个非守护线程没有结束,守护线程就在工作,只有当最后一个非守护线程结束时,守护线程才随着JVM一同结束工作。Daemon的作用就是为其他线程的运行提供便利服务,守护线程最典型的应用就是GC(垃圾回收器)。

  • 相关阅读:
    一起谈.NET技术,WPF企业内训全程实录(上) 狼人:
    一起谈.NET技术,微软PDC10:大牛谈ASP.NET和C#技术走向 狼人:
    一起谈.NET技术,.NET 中的正则表达式 狼人:
    poj2411 2663 2420 dp+状态压缩(多米诺骨牌问题)
    Windows核心编程学习三:利用专有命名空间实现单一实例
    从GitHub将Maven项目导入Eclipse4.2
    Flex很可能会消失
    Spring攻略学习笔记(0)开发环境简介
    Yii 访问 Gii(脚手架)时出现 403 错误
    Lua基础 编译、运行、错误处理
  • 原文地址:https://www.cnblogs.com/lijia0511/p/5041718.html
Copyright © 2020-2023  润新知