zoukankan      html  css  js  c++  java
  • java小知识点7

    进程:每个进程拥有自己的一整套变量

    线程:共享数据

    调用Thread.sleep不会创建一个新的线程,sleep是Thread类的静态方法,用于暂停当前线程。

    定义线程建议通过Runnable接口,继承Thread无法继承其它的类。

    线程的stop方法已经被弃用。请求线程终止,使用interrupt方法

    如果线程正在运行,调用interrupt方法,中断状态置位

    线程被阻塞,调用interrupt方法,抛出InterruptException

    线程状态:

    • new
    • runnable
    • blocking
    • waiting
    • timed waiting
    • terminated

    新创建状态:

    Thread对象刚被实例化

    可运行线程:

    调用start方法后,线程处于runnable方法。可运行的线程可能正在运行,也可能没有运行,取决于时间片分配

    阻塞状态和等待状态:

    被终止:

    • run方法正常退出
    • 一个没有捕获的异常

    线程属性

    线程优先级1-10,高度依赖操作系统

    守护线程为其它线程提供服务,当虚拟机中只剩下守护线程,虚拟机退出。守护线程不应该访问固有资源,因为它在任意时刻发生中断。

    线程的run方法不能抛出任何必检异常

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked exception处理掉。

    捕获线程逃逸的异常:http://blog.csdn.net/u010853261/article/details/61419677

    同步

    ReentrantLock和synchronized

    不同对象内部的lock不具有竞争,Synchronized也是一样的。

    条件对象的作用:进入临界区,还需要一个条件才能正常工作

    不使用>synchronized>lock+condition

    监视器:不需要程序员考虑加锁,保持线程安全

    用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。volatile很容易被误用,用来进行原子性操作。

    volatile详细解释:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html

    尝试获得锁:myLock.tryLock()成功加锁返回True,失败返回False

    ReentrantLock:可以再次进入的锁

    ReentrantReadWriteLock:读写锁

    不要使用线程的stop方法和suspend方法

    阻塞队列

    阻塞队列:LinkedBlockingQueue、ArrayBlockingQueue、PriorityBlockingQueue、DelayQueue(完成延迟时间才会从队列移除)

    线程安全的集合

    Callable和future

    执行器

    同步器

  • 相关阅读:
    函数的定义
    函数名的本质
    函数进阶
    三元运算
    数据类型 补充
    安装python问题
    neo4j nosql图数据库学习
    ubutun lunix 64安装neo4j 图形数据库
    git error: object file .git/objects/b9/e269f50db2a3415cc8ad5ba40b82b9b6a13d45 is empty
    django orm 时间处理
  • 原文地址:https://www.cnblogs.com/zcy-backend/p/6879360.html
Copyright © 2011-2022 走看看