Java
java基础
KyrieRay
开发
展开
-
ThreadLocal原理
Thread为每个线程维护了ThreadLocalMap这么一个Map,属于线程的内部属性,不同的线程拥有完全不同的ThreadLocalMap变量,而ThreadLocalMap的key是LocalThread对象本身,value则是要存储的对象 ThreadLocalMap是ThreadLocal的内部类,用Entry来进行存储调用 ThreadLocal的set()方法时,实际上就是往ThreadLocalMap设置值,key是ThreadLocal对象,值是传递进来的对象 调用ThreadLoca.原创 2020-08-13 11:20:41 · 147 阅读 · 0 评论 -
Java实现生产者消费者
文章目录使用Object的wait() / notify()方法Lock配合Condition 使用Object的wait() / notify()方法 对queue上锁 import java.util.LinkedList; import java.util.Queue; import java.util.Random; /** * @author KyrieLuo * @create 2020/8/6-11:10 */ public class ProducerConsumer { p原创 2020-08-06 11:45:37 · 88 阅读 · 0 评论 -
Java读写文件
文件读取 按字符读取 如果我们要取的数据基本单位是单个字符,那么用这种方法读取文件就比较适合。 利用FileReader中的read()方法 FileReader.read(char[] cbuf),参数——cbuf是目标缓冲区;返回——读取的字符串数量,如果已达到末尾则返回-1。 int num=0; char[] buf=new char[1024]; //打开文件 FileReader fr = new FileReader("text.txt"); //取出字符存到buf数组中 while((n原创 2020-08-03 10:27:07 · 96 阅读 · 0 评论 -
Java类型通配符上限和下限
Java的泛型中,通配符可以设置上限和下限。 上限 上限:<? extends T> ?是T和T的子类 首先要知道<? extends T> <? super T> 是两个确定的类型。 对于<? extends T> 来说,集合里的元素应该应该是T类型,因为你添加的是T或者T的子类,设置为T就可以激发多态了。所以你也只能从这个集合中取出T类型,因为它里面的元素本来设置的就是T类型,你赋值进去只不过是将T的子类赋值给了T。但是呢,你就不能给这个集合里添加元素了,转载 2020-07-18 16:17:06 · 2013 阅读 · 0 评论