上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页
摘要: (1)保证可见性:多线程主要围绕可见性和原子性两个特性而展开,使用volatile关键字修饰的变量,保证了其在多线程之间的可见性,即每次读取到volatile变量,一定是最新的数据。 当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取 阅读全文
posted @ 2017-09-07 22:24 coder为 阅读(217) 评论(0) 推荐(0) 编辑
摘要: CyclicBarrier示例: 每调用一次barrier.await(), barrier的counter就减一,直到减到0,线程执行。所以CyclicBarrier的作用就是使一组线程一起到达某个点的时候同时执行。 CountDownLatch示例: 只有CountDownLatch减到0,线程 阅读全文
posted @ 2017-09-07 22:20 coder为 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 我们知道创建线程的方式有两种,一种是实现Runnable接口,另一种是继承Thread,但是这两种方式都有个缺点,那就是在任务执行完成之后无法获取返回结果,那如果我们想要获取返回结果该如何实现呢?还记上一篇Executor框架结构中提到的Callable接口和Future接口吗?,是的,从JAVA 阅读全文
posted @ 2017-09-07 22:08 coder为 阅读(207) 评论(0) 推荐(0) 编辑
摘要: Unsafe 简单讲一下这个类。Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作。 这个类尽管里面的方法都是public的,但是并没有办法使用它们,JDK API文档也没有提供任何 阅读全文
posted @ 2017-09-07 21:50 coder为 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 1、接口和抽象类的概念是不一样的。接口是对动作的抽象,表示的是这个对象能做什么,比如人可以吃东西、狗也可以吃东西,只要有相同的行为;抽象类是对根源的抽象,表示的是这个对象是什么,比如男人是人、女人也是人 2、可以实现多个接口,只能继承一个抽象类 3、接口中只能定义抽象方法,抽象类中可以有普通方法 4 阅读全文
posted @ 2017-09-07 21:49 coder为 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 内部类 最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类。 内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功,就会生成两个完全不同的.class文件了,分别是outer.class和outer$inner.c 阅读全文
posted @ 2017-09-07 20:48 coder为 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 泛型初探 在泛型(Generic type或Generics)出现之前,是这么写代码的: 当然这是完全允许的,因为List里面的内容是Object类型的,自然任何对象类型都可以放入、都可以取出,但是这么写会有两个问题: 1、当一个对象放入集合时,集合不会记住此对象的类型,当再次从集合中取出此对象时, 阅读全文
posted @ 2017-09-07 20:15 coder为 阅读(130) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/xrq730/p/4869065.html 自动拆箱和自动装箱 Java为每种基本数据类型都提供了对应的包装器类型。举个例子: 这个过程中会自动根据数值创建对应的Integer对象,这就是自动装箱。再看另外一段代码: 这个过程中会根据包装器类型自动将数据 阅读全文
posted @ 2017-09-07 19:54 coder为 阅读(857) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://www.cnblogs.com/xrq730/p/4868465.html 以前对foreach循环就是这么用着,触动我去研究foreach循环的原理的原因是大概两个月前,自己写了一个ArrayList,想用foreach循环遍历一下看一下写的效果,结果报了空指针异常。本文就写 阅读全文
posted @ 2017-09-07 19:49 coder为 阅读(748) 评论(0) 推荐(0) 编辑
摘要: 可变长度参数 先讲可变长度参数,看一段代码: print方法的参数的意思是表示传入的String个数是不定的,看一下代码的运行结果: 我用数组遍历的方式成功地将输入的参数遍历出来了,这说明两个问题: 1、可以使用遍历数组的方式去遍历可变参数 2、可变参数是利用数组实现的 既然这样,那我其实main函 阅读全文
posted @ 2017-09-07 19:45 coder为 阅读(428) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页