• Thread


    1、java有10个优先级,xp有7个,solaris则有2的31次幂个。一般建议不设置优先级,如果设置优先级的话,建议设置

    Thread.MAX_PRIORITY;
    Thread.MIN_PRIORITY;
    Thread.NORM_PRIORITY;这三个优先级

    1、任意时刻可以调用Thread.setPriority()来设置线程的优先级,会影响线程的调度频率。

    2、Thread.getPriority()

    3、线程之间异常是不能扩散的,当一个线程最后没有捕获异常,线程扩散到run()之后该线程就结束了。所以需要设置一个线程处理器来进行回收资源。

        线程调用异常handler的顺序是这样的:1、本线程的异常处理器  2、如果1没有调线程所在组的异常处理器  3、2没有的话调用Thread的default异常处理器。

    4、Thread.isDeamon(),Thread.setDeamon()   守护线程,当非守护线程都结束的时候,守护线程自动结束。

        后台线程显示创建的所有线程默认都是daemon线程。而且daemon的run没有必要执行finally子句就会结束。

       当非daemon线程全部结束完成之后,daemon线程会立刻终止,不执行finally子句。

    5、Thread.isAlive判断线程是否结束

    6、Thread.join()等待线程结束,也就是isAlive()返回false本线程才继续。

          Thread.join(时间)

          可以被中断

    7、Thread.yield()建议调度下一个线程

    8、不要过多的追究线程组,不值得。

    9、一般将属性设置为private。

    10、synchronized加在方法上面实际上给this加的锁,注意,一个线程可以不断的获得一个锁,只要本线程已经获得了锁,然后再请求的时候还是能获得,JVM会对锁进行计数。

    11、class对象也能加锁,是通过在static方法上加synchorized。

    12、ReentrantLock能提供更细粒度的锁操作方式,同时提供了很多的特性,如设置加锁的时间,设置可被中断。一般不使用Lock,直接使用synchorized,在性能调优的时候才使用Lock。

  • 相关阅读:
    图片不能显示
    Lambda表达式where过滤数据
    存储文本到一个文件里
    获取用户临时文件夹路径
    判断某一个字符串是否存在另一个字符串中
    使用反射为特性赋值
    字符串与数据流之间的转换
    控制台应用程序获取计算机名
    重复输出字符或字符串
    使用HashSet<>去除重复元素的集合
  • 原文地址:https://www.cnblogs.com/YDDMAX/p/5222648.html
Copyright © 2020-2023  润新知