• android 学习笔记 1


    Collections.unmodifiableList

    简单来说,当我们封装了一个list,外面可能会需要获取这个list。如果直接将list返回,外界很可能会修改这个list,导致数据不稳定。那有没有解决办法呢?有的。

    public List<String> getCourses(){
         return Collections.unmodifiableList(courses);
    }

    这样操作之后,通过 getCourses() 方法获得的 courses 是“只读的”,如果你试图向其添加一个新课程,则抛出 java.lang.UnsupportedOperationException。你必须通过 Student1.addCourse() 来向特定的 Student1 对象添加一个新课程。

    daemon线程

    java线程是一个运用很广泛的重点知识,我们很有必要了解java的daemon线程.

    1.首先我们必须清楚的认识到java的线程分为两类: 用户线程和daemon线程

    • 用户线程: 用户线程可以简单的理解为用户定义的线程,当然包括main线程(以前我错误的认为main线程也是一个daemon线程,但是慢慢的发现原来main线程不是,因为如果我再main线程中创建一个用户线程,并且打出日志,我们会发现这样一个问题,main线程运行结束了,但是我们的线程任然在运行).
    • daemon线程: daemon线程是为我们创建的用户线程提供服务的线程,比如说jvm的GC等等,这样的线程有一个非常明显的特征: 当用户线程运行结束的时候,daemon线程将会自动退出.(由此我们可以推出下面关于daemon线程的几条基本特点)

    2. daemon 线程的特点: 

    • 守护线程创建的过程中需要先调用setDaemon方法进行设置,然后再启动线程.否则会报出IllegalThreadStateException异常。
    • 由于daemon线程的终止条件是当前是否存在用户线程,所以我们不能指派daemon线程来进行一些业务操作,而只能服务用户线程。
    • daemon线程创建的子线程任然是daemon线程。
  • 相关阅读:
    Oracle 18c新特性一览
    iOS xcode缓存问题
    预编译头文件
    iOS 限制UITextField输入字符
    网络通信之 字节序转换原理与网络字节序、大端和小端模式
    iOS 库文件制作
    iOS 全屏布局
    内存问题 动态加载地址和运行时地址
    申请工作居住证政策解答
    phpsession配置
  • 原文地址:https://www.cnblogs.com/huansky/p/11718716.html
Copyright © 2020-2023  润新知