Java基础
文章平均质量分 82
Java基础必备知识积累
茜茜770
不积跬步,无以至千里;不积小流,无以成江海。
展开
-
JDK并发包---(11)线程阻塞工具类:LockSupport
package org.miqi.thread.synchronous.control;import java.util.concurrent.locks.LockSupport;public class LockSupportDemo { public static Object u = new Object(); public static ChangeObjectThread原创 2017-02-09 16:20:58 · 683 阅读 · 0 评论 -
JDK并发包---(10)循环栅栏:CyclicBarrier
//CyclicBarrier反复线程计数:一个司令集结士兵,执行任务的例子import java.util.Random;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class CyclicBarrierDemo { /**原创 2017-01-10 15:21:18 · 1023 阅读 · 0 评论 -
JDK并发包---(9)倒计时器:CountDownLatch
import java.util.Date;import java.util.Random;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class CountDownL原创 2017-01-09 18:37:34 · 704 阅读 · 0 评论 -
JDK并发包---(8)ReadWriteLock读写锁:替换ReentrantLock,提高性能
import java.util.Date;import java.util.Random;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;import java.util.concurrent.locks.ReentrantReadWriteLock;impo原创 2017-01-05 16:27:07 · 456 阅读 · 0 评论 -
JDK并发包---(7)允许多个线程同时访问的:信号量(Semaphore)
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;public class SemaphoreDemo implements Runnable { final Semaphore semaphore原创 2017-01-05 14:04:49 · 557 阅读 · 0 评论 -
JDK并发包---(6)重入锁ReentrantLock搭档:Condition条件
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class ReenterLockCondition implements Runnable { public static ReentrantLock lock = new Reentran原创 2017-01-04 15:54:49 · 650 阅读 · 0 评论 -
JDK并发包---(5)重入锁ReentrantLock:公平锁
import java.util.concurrent.locks.ReentrantLock;public class FairLock implements Runnable { public static ReentrantLock lock = new ReentrantLock(true); @Override public void run() { while (tru原创 2017-01-04 15:51:29 · 650 阅读 · 0 评论 -
JDK并发包---(4)重入锁ReentrantLock:锁申请无限等待且不会产生死锁
import java.util.Date;import java.util.concurrent.locks.ReentrantLock;public class TryLock implements Runnable { public static ReentrantLock lock1 = new ReentrantLock(); public static ReentrantL原创 2017-01-04 15:49:48 · 810 阅读 · 0 评论 -
JDK并发包---(3)重入锁ReentrantLock:锁申请等待限时
import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.ReentrantLock;public class TimeLock implements Runnable { public static ReentrantLock lock = new ReentrantLock(); @Override原创 2017-01-04 15:45:25 · 706 阅读 · 0 评论 -
JDK并发包---(2)重入锁ReentrantLock:中断响应
import java.util.concurrent.locks.ReentrantLock;/** * interrupted Lock * */public class IntLock implements Runnable { public static ReentrantLock原创 2017-01-04 15:41:30 · 1454 阅读 · 0 评论 -
JDK并发包---(1)重入锁ReentrantLock:基本使用
import java.util.concurrent.locks.ReentrantLock;public class ReenterLock implements Runnable { public static ReentrantLock lock = new ReentrantLock(); public static int i = 0; @Override public原创 2017-01-04 15:30:24 · 563 阅读 · 0 评论 -
java线程研究---(10)Thread同步:死锁
死锁synchronized块的乱用,会造成死锁。下面来看看死锁形成的大致情况:线程T1,执行线程对象A线程T2,执行线程对象B线程对象A,里面有加锁的代码需要获得自己的锁,并且同时有另外一个加锁的代码需要获得线程对象B的锁。线程对象B,里面有加锁的代码需要获得自己的锁,并且同时有另外一个加锁的代码需要获得线程对象A的锁。简言之:线程对象A在获得自己的锁的时候,原创 2015-09-21 13:25:48 · 1367 阅读 · 0 评论 -
java线程研究---(9)Thread同步:如何加锁
继续上一文。运行结果如下:Thread-1: 1Thread-1: 2Thread-1: 3Thread-0: 4Thread-0: 5Thread-1: 6Thread-1: 7Thread-0: 8Thread-0: 9Thread-0: 10Thread-1: 11运行结果似乎不完善,因为多打了一个11出来!哈哈原创 2015-09-02 16:22:04 · 2568 阅读 · 0 评论 -
java线程研究---(8)Thread同步:锁的概念
(多线程数据共用的)示例代码:先来看看“java线程研究---(7)Thread同步:多线程数据共用会产生问题”这篇文章里面主要的代码例子ShareDataThread.javapackage thread;public class ShareDataThread implements Runnable { private int i = 0; @Override原创 2015-09-02 11:47:51 · 1151 阅读 · 0 评论 -
java线程研究---(7)Thread同步:多线程数据共用会产生问题
引言:为什么会产生共用?多线程的应用程序,在同一个application同时运行,就一定会涉及资源共用的问题。什么资源可以共用?代码,数据可以共用。什么资源不可以共用?cpu不可以共用。(在一个瞬时时刻,只有一个Thread在占用cpu)为什么说代码公用不会产生问题?java代码,编译成class之后,就是死的了,在多个线程运行同一份代码原创 2015-09-01 16:57:01 · 1725 阅读 · 0 评论 -
java线程研究---(6)暂停Thread:join
暂停Threadjoin方法:Thread对象.join()比如,当前有一个线程对象child,当调用了child.join()方法之后(不是child.start()方法哦),会让当前线程对象child的,父级Thread的对象parent,从执行(running)状态进入暂停(blocked)状态。并且在当前线程对象child执行完毕的时候,让父级Thread的对象原创 2015-08-25 17:04:58 · 1158 阅读 · 2 评论 -
java线程研究---(5)暂停Thread:yield
暂停Threadyield方法:静态方法Thread.yield()yield方法会让Thread对象直接从执行(running)状态进入等待执行(runnable)状态。这里的“直接”是指没有设置等待时间(没有blocked pool等待池的概念),也就是yield方法没有参数。但是!因为(running)状态和(runnable)状态之间的转换,需要cpu调度的:可能延原创 2015-08-10 14:49:51 · 2515 阅读 · 1 评论 -
java线程研究---(4)暂停Thread:sleep
暂停Threadsleep方法:顾名思义,睡一会。静态方法Thread.sleep()sleep方法会让Thread对象暂时停止一段时间(即,进入blocked暂停状态),然后又恢复继续执行。当一个Thread对象睡醒之后,不是立刻进入执行(running)状态,而是进入等待执行(runnable)状态。如果让一个Thread对象睡一秒钟,只是保证了这个Thread对象至少原创 2015-08-10 11:57:03 · 3013 阅读 · 0 评论 -
java线程研究---(3)停止Thread
停止Thread既然可以用start方法启动一个线程对象执行,那么就应该有对应的stop方法来终止(停止)线程对象的执行。但是在JDK1.1之后,这个stop方法就取消了,因为会造成系统进入不稳定的状态。。。(这里说的 终止,停止,是指线程停掉之后,永远都不能恢复执行了)那么我们就自己设计一个方案,让线程对象停止执行:一个线程对象的执行体是run原创 2015-08-07 13:52:38 · 845 阅读 · 0 评论 -
java线程研究---(2)启动Thread
启动Thread“new”这个状态:当我们产生Thread对象时,它会在“new”这个状态“等待执行(runnable)”状态:调用start方法之后会进入“等待执行(runnable)”状态后续的状态我会不断更新,要牢记!!!!“等待执行(runnable)”状态注意!runnable状态,不是running(执行)状态调用start方法之后,线程原创 2015-08-07 12:04:02 · 812 阅读 · 0 评论 -
java线程研究---(1)建立Thread和产生线程对象
建立Thread建立Thread的两种方法:继承Thread类package thread;public class Hello1 extends Thread { String name; public Hello1(String n) { this.name = n; } @Override public void run() {原创 2015-08-07 10:35:01 · 746 阅读 · 0 评论 -
java中的clone()方法的研究---(10)如何编写正确的clone()方法:子自定义Object类型
在自定义类Person中,会有子自定义Object集合类型。下面我就不一步步测试给大家看了,我就直接贴出来正确的clone方法了。首先,我们有这样一个子对象类Hand,自己实现了clone方法。package tt.vo;public class Hand implements Cloneable { private long size;原创 2015-07-14 12:09:07 · 1387 阅读 · 0 评论 -
java中的clone()方法的研究---(9)如何编写正确的clone()方法:Collection
在自定义类Person中,会有Collection集合类型。下面我就不一步步测试给大家看了,我就直接贴出来正确的clone方法了。目前针对,ArrayList, ArrayList这两个类型。package tt.vo;import java.sql.Timestamp;import java.util.ArrayList;import java.util.Arra原创 2015-07-14 10:30:26 · 1551 阅读 · 0 评论 -
java中的clone()方法的研究---(8)如何编写正确的clone()方法:数组类型
在自定义类Person中,会有String, Integer 类型。我们总结的是,针对这些类型的字段,在clone()方法里面,不需要有特别的处理。但是!!!!!!!String, Integer类型的数组,在clone()方法里面,是需要特别处理的!!!!下面来看看我的测试流程。先在自定义类Person中,添加 String [] 和 Integer [] 两个属性。原创 2015-06-12 16:56:20 · 3670 阅读 · 4 评论 -
java中的clone()方法的研究---(7)如何编写正确的clone()方法:Date, Timestamp
五:Date, Timestamp类型在自定义类Person中添加新的属性:Date, Timestamppackage tt.vo;import java.sql.Timestamp;import java.util.Arrays;import java.util.Date;public class Person implements Cloneabl原创 2015-06-11 17:17:07 · 2585 阅读 · 0 评论 -
java中的clone()方法的研究---(6)如何编写正确的clone()方法:StringBuffer,StringBuilder
在自定义类Person中添加一个新的StringBuffer, StringBuilder属性四:StringBuffer, StringBuilder:是对象的类型在自定义类Person中添加新的属性:StringBuffer, StringBuilderpackage tt.vo;public class Person implements Cl原创 2015-06-10 15:21:28 · 1711 阅读 · 0 评论 -
java中的clone()方法的研究---(5)如何编写正确的clone()方法:String类型
一个自定义Object,它里面的属性如果是String对象类型三:String:是对象的类型在自定义类Person中添加一个新的String属性package tt.vo;public class Person implements Cloneable { // 基本数据类型 private int age; // Wrapper Class类原创 2015-04-24 15:24:18 · 1014 阅读 · 0 评论 -
java中的clone()方法的研究---(4)如何编写正确的clone()方法:Wrapper Class
二:Wrapper Class(基本数据类型的包装类型):是对象的类型Wrapper Class都有哪些:基本数据类型占用内存大小包装类(Wrapper Class)byte1byteByteshort2bytesShortint4bytesIntegerlong8byt原创 2015-04-24 13:56:13 · 1912 阅读 · 0 评论 -
java中的clone()方法的研究---(3)如何编写正确的clone()方法:基本数据类型
先来看看一个自定义Object,它里面的属性都有啥:基本数据类型Wrapper Class(基本数据类型的包装类型)String子自定义Object类型Java提供的其他类型一:基本数据类型:不是对象的类型,所以基本数据类型永远都是深克隆。基本数据类型在赋值的时候,是传值,而不是传引用。double m = 4; // 此时, 给变量m,开辟了8by原创 2015-04-23 14:13:20 · 1717 阅读 · 0 评论 -
java中的clone()方法的研究---(2)浅克隆和深克隆
网上铺天盖地,写了那么多浅克隆和深克隆的区别,小妹我自己来个精辟的总结(也不知道对不对呢)浅克隆:传引用深克隆:传值下面上图,进行具体说明,内容有点黄哦浅克隆示意图:浅克隆的几点说明:对象:“酒店的房间”。引用:“钥匙”默认情况,一个房间配一把钥匙进行浅克隆之后,其实是配了多把相同的钥匙!!!这些钥匙打开的,是同一个“酒店原创 2015-04-23 15:30:10 · 925 阅读 · 3 评论 -
java中的clone()方法的研究---(1)自定义的类如何才可以被clone
读了张纪刚老湿的博客---《详解Java中的clone方法 -- 原型模式》http://blog.csdn.net/zhangjg_blog/article/details/18369201 我受益匪浅,下面此基础上,结合我自己的理解总结一下。一个自定义的类如何才可以被clone。。。对我java基础不扎实的我,我以为java的超类Object有clone()原创 2015-04-22 16:56:53 · 1794 阅读 · 0 评论