zoukankan      html  css  js  c++  java
  • 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线程。
  • 相关阅读:
    [NOI2010] 能量采集 (数学)
    mysql双主操作记录
    linux查看版本
    netty
    idea修改文件,target目录对应的文件消失
    oracle11g的分区(range、list)索引测试
    There is a cycle in the hierarchy解决办法
    git学习转廖雪峰
    解决SVN Cleanup错误: Failed to run the WC DB work queue associated with
    nginx之 proxy_pass
  • 原文地址:https://www.cnblogs.com/huansky/p/11718716.html
Copyright © 2011-2022 走看看