From 5e965120f5a1bc4672f966e7aac9e303576f77b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Thu, 29 Dec 2016 19:16:52 +0800 Subject: [PATCH 001/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9ThreadToturial?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=AB=A0=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index ecd1f1f..d2563b0 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,9 @@ ## ThreadTutorial内容说明 在源码路径下`cn.byhieg.threadtutorial`中放置的是Java多线程的代码和测试例子,在每一个章的包下,都有一个ReadMe来说明该章的知识点。 +在char01包里放置Java多线程基本知识的代码。内容如下: +1. 如何使用多线程 +2. 如何得到多线程的一些信息 +3. 如何停止线程 +4. 如何暂停线程 +5. 线程的一些其他用法 From bc2a2cb6dc50dacb4ebe82ca37bf4ffe93296649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Fri, 30 Dec 2016 12:00:00 +0800 Subject: [PATCH 002/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial=20char?= =?UTF-8?q?02=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../char02/HasSelfPrivateNum.java | 27 ++++++++++++++++ .../threadtutorial/char02/MyObject.java | 31 +++++++++++++++++++ .../threadtutorial/char02/PublicVar.java | 28 +++++++++++++++++ .../char02/PublicVarThreadA.java | 19 ++++++++++++ .../char02/SelfPrivateThreadA.java | 19 ++++++++++++ .../char02/SelfPrivateThreadB.java | 19 ++++++++++++ .../char02/SynchronizedMethodThread.java | 26 ++++++++++++++++ .../char02test/HasSelfPrivateNumTest.java | 24 ++++++++++++++ .../char02test/PublicVarThreadATest.java | 20 ++++++++++++ .../SynchronizedMethodThreadTest.java | 25 +++++++++++++++ 10 files changed, 238 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/HasSelfPrivateNum.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/MyObject.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/PublicVar.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/PublicVarThreadA.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SelfPrivateThreadA.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SelfPrivateThreadB.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedMethodThread.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/HasSelfPrivateNumTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/PublicVarThreadATest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/SynchronizedMethodThreadTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/HasSelfPrivateNum.java b/src/main/java/cn/byhieg/threadtutorial/char02/HasSelfPrivateNum.java new file mode 100644 index 0000000..bbacd59 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/HasSelfPrivateNum.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class HasSelfPrivateNum { + + private int num = 0; + + synchronized public void addI(String username){ + try{ + + if (username.equals("a")){ + num = 100; + System.out.println("a set over!"); + Thread.sleep(2000); + }else { + num = 200; + System.out.println("b set over!"); + } + System.out.println(username + " num=" + num); + }catch (Exception e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/MyObject.java b/src/main/java/cn/byhieg/threadtutorial/char02/MyObject.java new file mode 100644 index 0000000..2db1be5 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/MyObject.java @@ -0,0 +1,31 @@ +package cn.byhieg.threadtutorial.char02; + +import com.sun.xml.internal.ws.api.pipe.SyncStartForAsyncFeature; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class MyObject { + + synchronized public void methodA(){ + try{ + System.out.println("begin methodA threadName=" + Thread.currentThread().getName()); + Thread.sleep(5000); + System.out.println("end"); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + synchronized public void methodB(){ + try{ + System.out.println("begin methodB threadName=" + Thread.currentThread().getName() + + " begin time =" + System.currentTimeMillis()); + Thread.sleep(5000); + System.out.println("end"); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/PublicVar.java b/src/main/java/cn/byhieg/threadtutorial/char02/PublicVar.java new file mode 100644 index 0000000..7555a4a --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/PublicVar.java @@ -0,0 +1,28 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class PublicVar { + + public String username = "A"; + public String password = "AA"; + + synchronized public void setValue(String username,String password){ + try{ + this.username = username; + Thread.sleep(3000); + this.password = password; + System.out.println("setValue method thread name=" + Thread.currentThread().getName() + " username=" + + username + " password=" + password); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + synchronized public void getValue(){ + System.out.println("getValue method thread name=" + Thread.currentThread().getName() + " username=" + username + + " password=" + password); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/PublicVarThreadA.java b/src/main/java/cn/byhieg/threadtutorial/char02/PublicVarThreadA.java new file mode 100644 index 0000000..8bcfb80 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/PublicVarThreadA.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class PublicVarThreadA extends Thread { + + private PublicVar publicVar; + public PublicVarThreadA(PublicVar publicVar){ + this.publicVar = publicVar; + } + + @Override + public void run() { + super.run(); + publicVar.setValue("B","BB"); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SelfPrivateThreadA.java b/src/main/java/cn/byhieg/threadtutorial/char02/SelfPrivateThreadA.java new file mode 100644 index 0000000..590666f --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SelfPrivateThreadA.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class SelfPrivateThreadA extends Thread{ + private HasSelfPrivateNum num; + + + public SelfPrivateThreadA(HasSelfPrivateNum num){ + this.num = num; + } + @Override + public void run() { + super.run(); + num.addI("a"); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SelfPrivateThreadB.java b/src/main/java/cn/byhieg/threadtutorial/char02/SelfPrivateThreadB.java new file mode 100644 index 0000000..0c0e610 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SelfPrivateThreadB.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class SelfPrivateThreadB extends Thread{ + private HasSelfPrivateNum num; + + + public SelfPrivateThreadB(HasSelfPrivateNum num){ + this.num = num; + } + @Override + public void run() { + super.run(); + num.addI("b"); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedMethodThread.java b/src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedMethodThread.java new file mode 100644 index 0000000..3cbbe02 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedMethodThread.java @@ -0,0 +1,26 @@ +package cn.byhieg.threadtutorial.char02; + +import cn.byhieg.threadtutorial.char01.SynchronizedObject; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class SynchronizedMethodThread extends Thread{ + + private MyObject object; + + public SynchronizedMethodThread(MyObject object){ + this.object = object; + } + + @Override + public void run() { + super.run(); + if(Thread.currentThread().getName().equals("A")){ + object.methodA(); + }else{ + object.methodB(); + } + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/HasSelfPrivateNumTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/HasSelfPrivateNumTest.java new file mode 100644 index 0000000..450d147 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/HasSelfPrivateNumTest.java @@ -0,0 +1,24 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.HasSelfPrivateNum; +import cn.byhieg.threadtutorial.char02.SelfPrivateThreadA; +import cn.byhieg.threadtutorial.char02.SelfPrivateThreadB; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class HasSelfPrivateNumTest extends TestCase { + public void testAddI() throws Exception { + HasSelfPrivateNum numA = new HasSelfPrivateNum(); + HasSelfPrivateNum numB = new HasSelfPrivateNum(); + SelfPrivateThreadA threadA = new SelfPrivateThreadA(numA); + threadA.start(); + SelfPrivateThreadB threadB = new SelfPrivateThreadB(numA); + threadB.start(); + + Thread.sleep(1000 * 3); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/PublicVarThreadATest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/PublicVarThreadATest.java new file mode 100644 index 0000000..c968c63 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/PublicVarThreadATest.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.PublicVar; +import cn.byhieg.threadtutorial.char02.PublicVarThreadA; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class PublicVarThreadATest extends TestCase { + public void testRun() throws Exception { + PublicVar publicVarRef = new PublicVar(); + PublicVarThreadA threadA = new PublicVarThreadA(publicVarRef); + threadA.start(); + Thread.sleep(40); + publicVarRef.getValue(); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/SynchronizedMethodThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SynchronizedMethodThreadTest.java new file mode 100644 index 0000000..b3ebb83 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SynchronizedMethodThreadTest.java @@ -0,0 +1,25 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.MyObject; +import cn.byhieg.threadtutorial.char02.SynchronizedMethodThread; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/1. + * Mail to byhieg@gmail.com + */ +public class SynchronizedMethodThreadTest extends TestCase { + public void testRun() throws Exception { + MyObject object = new MyObject(); + SynchronizedMethodThread a = new SynchronizedMethodThread(object); + a.setName("A"); + SynchronizedMethodThread b = new SynchronizedMethodThread(object); + b.setName("B"); + + a.start(); + b.start(); + + Thread.sleep(1000 * 15); + } + +} \ No newline at end of file From bca772d732eb73bfb053e3fdcb679b811c6e6607 Mon Sep 17 00:00:00 2001 From: shiqifeng <18581871304@163.com> Date: Tue, 3 Jan 2017 11:22:17 +0800 Subject: [PATCH 003/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial2.2.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../threadtutorial/char02/CommonUtils.java | 14 ++++++ .../char02/FatherSynService.java | 19 ++++++++ .../threadtutorial/char02/HalfSynTask.java | 36 ++++++++++++++++ .../threadtutorial/char02/HalfTaskThread.java | 20 +++++++++ .../char02/LongTimeServiceThreadA.java | 22 ++++++++++ .../char02/LongTimeServiceThreadB.java | 22 ++++++++++ .../threadtutorial/char02/LongTimeTask.java | 30 +++++++++++++ .../threadtutorial/char02/SonSynService.java | 21 +++++++++ .../threadtutorial/char02/SonSynTread.java | 14 ++++++ .../char02/SynchronizedService.java | 22 ++++++++++ .../char02/SynchronizedServiceThread.java | 14 ++++++ .../char02test/HalfTaskThreadTest.java | 25 +++++++++++ .../LongTimeServiceThreadATest.java | 43 +++++++++++++++++++ .../char02test/SonSynTreadTest.java | 18 ++++++++ .../SynchronizedServiceThreadTest.java | 18 ++++++++ 15 files changed, 338 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/CommonUtils.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/FatherSynService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/HalfSynTask.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/HalfTaskThread.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/LongTimeServiceThreadA.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/LongTimeServiceThreadB.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/LongTimeTask.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SonSynService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SonSynTread.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedServiceThread.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/HalfTaskThreadTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/LongTimeServiceThreadATest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/SonSynTreadTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/SynchronizedServiceThreadTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/CommonUtils.java b/src/main/java/cn/byhieg/threadtutorial/char02/CommonUtils.java new file mode 100644 index 0000000..394b0dd --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/CommonUtils.java @@ -0,0 +1,14 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class CommonUtils { + + public static long beginTime1; + public static long endTime1; + + public static long beginTime2; + public static long endTime2; +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/FatherSynService.java b/src/main/java/cn/byhieg/threadtutorial/char02/FatherSynService.java new file mode 100644 index 0000000..e916288 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/FatherSynService.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class FatherSynService { + + public int i = 10; + synchronized public void operateIMainMethod(){ + try{ + i--; + System.out.println("main print i=" +i); + Thread.sleep(100); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/HalfSynTask.java b/src/main/java/cn/byhieg/threadtutorial/char02/HalfSynTask.java new file mode 100644 index 0000000..d73cf45 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/HalfSynTask.java @@ -0,0 +1,36 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class HalfSynTask { + + public void doLongTimeTask(){ + for(int i = 0 ;i < 4;i++){ + System.out.println("nosynchronized threadName=" + Thread.currentThread().getName() + " i=" + (i + 1)); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } + System.out.println(""); + + synchronized (this){ + for (int i = 0 ; i < 4;i++){ + System.out.println("synchronized threadName=" +Thread.currentThread().getName() + " i=" + (i + 1)); + } + } + + for (int i = 1000 ; i < 1005;i ++){ + System.out.println("after synchronize =" + Thread.currentThread().getName() + " i=" + (i + 1)); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/HalfTaskThread.java b/src/main/java/cn/byhieg/threadtutorial/char02/HalfTaskThread.java new file mode 100644 index 0000000..6bc48ec --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/HalfTaskThread.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class HalfTaskThread extends Thread{ + + private HalfSynTask task; + + public HalfTaskThread(HalfSynTask task){ + this.task = task; + } + + @Override + public void run() { + super.run(); + task.doLongTimeTask(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/LongTimeServiceThreadA.java b/src/main/java/cn/byhieg/threadtutorial/char02/LongTimeServiceThreadA.java new file mode 100644 index 0000000..6184b21 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/LongTimeServiceThreadA.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class LongTimeServiceThreadA extends Thread{ + + private LongTimeTask task; + public LongTimeServiceThreadA(LongTimeTask task){ + super(); + this.task = task; + } + + @Override + public void run() { + super.run(); + CommonUtils.beginTime1 = System.currentTimeMillis(); + task.doLongTimeTask(); + CommonUtils.endTime1 = System.currentTimeMillis(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/LongTimeServiceThreadB.java b/src/main/java/cn/byhieg/threadtutorial/char02/LongTimeServiceThreadB.java new file mode 100644 index 0000000..a87f277 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/LongTimeServiceThreadB.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class LongTimeServiceThreadB extends Thread{ + + private LongTimeTask task; + public LongTimeServiceThreadB(LongTimeTask task){ + super(); + this.task = task; + } + + @Override + public void run() { + super.run(); + CommonUtils.beginTime2 = System.currentTimeMillis(); + task.doLongTimeTask(); + CommonUtils.endTime2 = System.currentTimeMillis(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/LongTimeTask.java b/src/main/java/cn/byhieg/threadtutorial/char02/LongTimeTask.java new file mode 100644 index 0000000..3473c74 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/LongTimeTask.java @@ -0,0 +1,30 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class LongTimeTask { + private String getData1; + private String getData2; + + public void doLongTimeTask(){ + try{ + System.out.println("begin task"); + Thread.sleep(3000); + String privateGetData1 = "长时间处理任务后从远程返回的值 1 threadName=" + Thread.currentThread().getName(); + String privateGetData2 = "长时间处理任务后从远程返回的值 2 threadName=" + Thread.currentThread().getName(); + + synchronized (this){ + getData1 = privateGetData1; + getData2 = privateGetData2; + } + + System.out.println(getData1); + System.out.println(getData2); + System.out.println("end task"); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SonSynService.java b/src/main/java/cn/byhieg/threadtutorial/char02/SonSynService.java new file mode 100644 index 0000000..eb41aae --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SonSynService.java @@ -0,0 +1,21 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class SonSynService extends FatherSynService{ + + synchronized public void operateISubMethod(){ + try{ + while (i > 0){ + i--; + System.out.println("sub print i=" + i); + Thread.sleep(1000); + this.operateIMainMethod(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SonSynTread.java b/src/main/java/cn/byhieg/threadtutorial/char02/SonSynTread.java new file mode 100644 index 0000000..0d55ecc --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SonSynTread.java @@ -0,0 +1,14 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class SonSynTread extends Thread{ + @Override + public void run() { + super.run(); + SonSynService son = new SonSynService(); + son.operateISubMethod(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedService.java b/src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedService.java new file mode 100644 index 0000000..9dfea6f --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedService.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class SynchronizedService { + + synchronized public void service1(){ + System.out.println("service1"); + service2(); + } + + synchronized public void service2(){ + System.out.println("service2"); + service3(); + } + + synchronized public void service3(){ + System.out.println("service3"); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedServiceThread.java b/src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedServiceThread.java new file mode 100644 index 0000000..04cf90b --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SynchronizedServiceThread.java @@ -0,0 +1,14 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class SynchronizedServiceThread extends Thread{ + @Override + public void run() { + super.run(); + SynchronizedService service = new SynchronizedService(); + service.service1(); + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/HalfTaskThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/HalfTaskThreadTest.java new file mode 100644 index 0000000..e2a8ad3 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/HalfTaskThreadTest.java @@ -0,0 +1,25 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.HalfSynTask; +import cn.byhieg.threadtutorial.char02.HalfTaskThread; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class HalfTaskThreadTest extends TestCase { + public void testRun() throws Exception { + HalfSynTask task = new HalfSynTask(); + HalfTaskThread threadA = new HalfTaskThread(task); + threadA.setName("A"); + threadA.start(); + + HalfTaskThread threadB = new HalfTaskThread(task); + threadB.setName("B"); + threadB.start(); + + Thread.sleep(1000 * 10); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/LongTimeServiceThreadATest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/LongTimeServiceThreadATest.java new file mode 100644 index 0000000..e031a57 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/LongTimeServiceThreadATest.java @@ -0,0 +1,43 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.CommonUtils; +import cn.byhieg.threadtutorial.char02.LongTimeServiceThreadA; +import cn.byhieg.threadtutorial.char02.LongTimeServiceThreadB; +import cn.byhieg.threadtutorial.char02.LongTimeTask; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class LongTimeServiceThreadATest extends TestCase { + + public void testRun() throws Exception { + LongTimeTask task = new LongTimeTask(); + LongTimeServiceThreadA threadA = new LongTimeServiceThreadA(task); + threadA.start(); + + LongTimeServiceThreadB threadB = new LongTimeServiceThreadB(task); + threadB.start(); + + try{ + Thread.sleep(1000 * 10); + }catch (InterruptedException e){ + e.printStackTrace(); + } + + long beginTime = CommonUtils.beginTime1; + if (CommonUtils.beginTime2 < CommonUtils.beginTime1){ + beginTime = CommonUtils.beginTime2; + } + + long endTime = CommonUtils.endTime1; + if (CommonUtils.endTime2 < CommonUtils.endTime1){ + endTime = CommonUtils.endTime2; + } + System.out.println("耗时:" + ((endTime - beginTime) / 1000)); + + Thread.sleep(1000 * 20); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/SonSynTreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SonSynTreadTest.java new file mode 100644 index 0000000..bf62a0a --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SonSynTreadTest.java @@ -0,0 +1,18 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.SonSynTread; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class SonSynTreadTest extends TestCase { + public void testRun() throws Exception { + SonSynTread thread = new SonSynTread(); + thread.start(); + + Thread.sleep(1000 * 10); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/SynchronizedServiceThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SynchronizedServiceThreadTest.java new file mode 100644 index 0000000..eeec7ba --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SynchronizedServiceThreadTest.java @@ -0,0 +1,18 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.SynchronizedServiceThread; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/3. + * Mail byhieg@gmail.com + */ +public class SynchronizedServiceThreadTest extends TestCase { + public void testRun() throws Exception { + SynchronizedServiceThread thread = new SynchronizedServiceThread(); + thread.start(); + + Thread.sleep(1000 * 3); + } + +} \ No newline at end of file From 269adff7631b3ac95155223a95ec12cdf8db558a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 3 Jan 2017 22:55:14 +0800 Subject: [PATCH 004/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial?= =?UTF-8?q?=E5=88=B02.2.9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../char02/DoubleSynThreadA.java | 19 ++++++++++++ .../char02/DoubleSynThreadB.java | 21 +++++++++++++ .../threadtutorial/char02/ListThread.java | 23 ++++++++++++++ .../threadtutorial/char02/MyOneList.java | 20 ++++++++++++ .../char02/MyOneListService.java | 23 ++++++++++++++ .../threadtutorial/char02/ObjectService.java | 31 +++++++++++++++++++ .../char02/SynBlockService.java | 30 ++++++++++++++++++ .../char02/SynBlockThreadA.java | 20 ++++++++++++ .../char02/SynBlockThreadB.java | 20 ++++++++++++ .../char02test/ListThreadTest.java | 27 ++++++++++++++++ .../char02test/ObjectServiceTest.java | 28 +++++++++++++++++ .../char02test/SynBlockServiceTest.java | 27 ++++++++++++++++ 12 files changed, 289 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/DoubleSynThreadA.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/DoubleSynThreadB.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/ListThread.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/MyOneList.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/MyOneListService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/ObjectService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SynBlockService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SynBlockThreadA.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SynBlockThreadB.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/ListThreadTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/ObjectServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/SynBlockServiceTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/DoubleSynThreadA.java b/src/main/java/cn/byhieg/threadtutorial/char02/DoubleSynThreadA.java new file mode 100644 index 0000000..d477634 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/DoubleSynThreadA.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class DoubleSynThreadA extends Thread{ + private ObjectService objectService; + + public DoubleSynThreadA(ObjectService objectService){ + this.objectService = objectService; + } + + @Override + public void run() { + super.run(); + objectService.serviceMethodA(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/DoubleSynThreadB.java b/src/main/java/cn/byhieg/threadtutorial/char02/DoubleSynThreadB.java new file mode 100644 index 0000000..15a2061 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/DoubleSynThreadB.java @@ -0,0 +1,21 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class DoubleSynThreadB extends Thread{ + + private ObjectService objectService; + + public DoubleSynThreadB(ObjectService objectService){ + this.objectService = objectService; + + } + + @Override + public void run() { + super.run(); + objectService.serviceMethodB(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/ListThread.java b/src/main/java/cn/byhieg/threadtutorial/char02/ListThread.java new file mode 100644 index 0000000..8369e84 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/ListThread.java @@ -0,0 +1,23 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class ListThread extends Thread{ + + private MyOneList list; + private String str; + + public ListThread(MyOneList list,String str){ + this.list = list; + this.str = str; + } + + @Override + public void run() { + super.run(); + MyOneListService service = new MyOneListService(); + service.addServiceMethod(list,str); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/MyOneList.java b/src/main/java/cn/byhieg/threadtutorial/char02/MyOneList.java new file mode 100644 index 0000000..eb537c3 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/MyOneList.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorial.char02; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class MyOneList { + + private List list = new ArrayList(); + synchronized public void add(String data){ + list.add(data); + } + + synchronized public int getSize(){ + return list.size(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/MyOneListService.java b/src/main/java/cn/byhieg/threadtutorial/char02/MyOneListService.java new file mode 100644 index 0000000..18533e6 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/MyOneListService.java @@ -0,0 +1,23 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class MyOneListService { + + + public MyOneList addServiceMethod(MyOneList list,String data){ + try{ + synchronized (list){ + if (list.getSize() < 1){ + Thread.sleep(1000 * 2); + list.add(data); + } + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + return list; + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/ObjectService.java b/src/main/java/cn/byhieg/threadtutorial/char02/ObjectService.java new file mode 100644 index 0000000..1c08932 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/ObjectService.java @@ -0,0 +1,31 @@ +package cn.byhieg.threadtutorial.char02; + +import cn.byhieg.threadtutorial.char01.ExampleSuspendThread; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class ObjectService { + + public void serviceMethodA(){ + try{ + synchronized (this){ + System.out.println("A begin time=" + System.currentTimeMillis()); + Thread.sleep(2000); + System.out.println("A end time =" + System.currentTimeMillis()); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + public void serviceMethodB(){ + synchronized (this){ + System.out.println("B begin time=" + System.currentTimeMillis()); + System.out.println("B end time=" + System.currentTimeMillis()); + } + } + + +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SynBlockService.java b/src/main/java/cn/byhieg/threadtutorial/char02/SynBlockService.java new file mode 100644 index 0000000..23ac219 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SynBlockService.java @@ -0,0 +1,30 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class SynBlockService { + + private String usernameParam; + private String passwrodParam; + + + public void setUSernamePassword(String username,String password){ + String anyString = new String(); + try{ + synchronized (anyString){ + System.out.println("线程名称为:" + Thread.currentThread().getName() + " 在 " + + System.currentTimeMillis() + " 进入同步块"); + + usernameParam = username; + Thread.sleep(1000 * 3); + passwrodParam = password; + System.out.println("线程名称为:" + Thread.currentThread().getName() + " 在 " + + System.currentTimeMillis() + " 离开同步块"); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SynBlockThreadA.java b/src/main/java/cn/byhieg/threadtutorial/char02/SynBlockThreadA.java new file mode 100644 index 0000000..19b79bd --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SynBlockThreadA.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class SynBlockThreadA extends Thread{ + + private SynBlockService service; + + public SynBlockThreadA(SynBlockService service){ + this.service = service; + } + + @Override + public void run() { + super.run(); + service.setUSernamePassword("a","aa"); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SynBlockThreadB.java b/src/main/java/cn/byhieg/threadtutorial/char02/SynBlockThreadB.java new file mode 100644 index 0000000..adbc7cf --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SynBlockThreadB.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class SynBlockThreadB extends Thread{ + + private SynBlockService service; + + public SynBlockThreadB(SynBlockService service){ + this.service = service; + } + + @Override + public void run() { + super.run(); + service.setUSernamePassword("b","bb"); + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/ListThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/ListThreadTest.java new file mode 100644 index 0000000..e434d9c --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/ListThreadTest.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.ListThread; +import cn.byhieg.threadtutorial.char02.MyOneList; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class ListThreadTest extends TestCase { + public void testRun() throws Exception { + MyOneList list = new MyOneList(); + ListThread a = new ListThread(list,"A"); + a.setName("A"); + a.start(); + + ListThread b = new ListThread(list,"B"); + b.setName("B"); + b.start(); + + Thread.sleep(1000 * 6); + + System.out.println("listSize=" + list.getSize()); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/ObjectServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/ObjectServiceTest.java new file mode 100644 index 0000000..a88b306 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/ObjectServiceTest.java @@ -0,0 +1,28 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.DoubleSynThreadA; +import cn.byhieg.threadtutorial.char02.DoubleSynThreadB; +import cn.byhieg.threadtutorial.char02.ObjectService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class ObjectServiceTest extends TestCase { + public void testServiceMethod() throws Exception { + ObjectService objectService = new ObjectService(); + DoubleSynThreadA a = new DoubleSynThreadA(objectService); + a.setName("A"); + a.start(); + + DoubleSynThreadB b = new DoubleSynThreadB(objectService); + b.setName("B"); + b.start(); + + Thread.sleep(1000 * 3); + } + + + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/SynBlockServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SynBlockServiceTest.java new file mode 100644 index 0000000..4649ea9 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SynBlockServiceTest.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.SynBlockService; +import cn.byhieg.threadtutorial.char02.SynBlockThreadA; +import cn.byhieg.threadtutorial.char02.SynBlockThreadB; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class SynBlockServiceTest extends TestCase { + public void testSetUSernamePassword() throws Exception { + SynBlockService service = new SynBlockService(); + SynBlockThreadA a = new SynBlockThreadA(service); + a.setName("A"); + a.start(); + + SynBlockThreadB b = new SynBlockThreadB(service); + b.setName("B"); + b.start(); + + Thread.sleep(1000 * 7); + + } + +} \ No newline at end of file From df3ed1d894b6f7dabbc3bf37c2a44d9bafad7cb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 3 Jan 2017 23:23:08 +0800 Subject: [PATCH 005/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial?= =?UTF-8?q?=E5=88=B02.2.10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../threadtutorial/char02/StaticService.java | 34 ++++++++++++++++++ .../char02test/StaticServiceTest.java | 36 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/StaticService.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/StaticServiceTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/StaticService.java b/src/main/java/cn/byhieg/threadtutorial/char02/StaticService.java new file mode 100644 index 0000000..69b5d95 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/StaticService.java @@ -0,0 +1,34 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class StaticService { + + synchronized public static void printA(){ + try{ + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 进入printA"); + Thread.sleep(1000 * 3); + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 离开printA"); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + synchronized public static void printB(){ + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 进入printB"); + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 离开printB"); + } + + synchronized public void printC(){ + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 进入printC"); + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 离开printC"); + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/StaticServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/StaticServiceTest.java new file mode 100644 index 0000000..dc77044 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/StaticServiceTest.java @@ -0,0 +1,36 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.StaticService; +import junit.framework.TestCase; + +import javax.management.relation.RoleUnresolved; + +/** + * Created by byhieg on 17/1/3. + * Mail to byhieg@gmail.com + */ +public class StaticServiceTest extends TestCase { + + public void testPrint() throws Exception{ + new Thread(new Runnable() { + public void run() { + StaticService.printA(); + } + }).start(); + + new Thread(new Runnable() { + public void run() { + StaticService.printB(); + } + }).start(); + + new Thread(new Runnable() { + public void run() { + new StaticService().printC(); + } + }).start(); + + Thread.sleep(1000 * 3); + } + +} \ No newline at end of file From bccbe9d7db183328a6afc029924ba222fd04ef95 Mon Sep 17 00:00:00 2001 From: shiqifeng <18581871304@163.com> Date: Wed, 4 Jan 2017 10:49:52 +0800 Subject: [PATCH 006/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0TreadTutorial?= =?UTF-8?q?=E5=88=B02.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../threadtutorial/char02/DeadLock.java | 47 +++++++++++++++ .../threadtutorial/char02/OutClass.java | 57 +++++++++++++++++++ .../char02test/DeadLockTest.java | 27 +++++++++ .../char02test/InnerClass1Test.java | 36 ++++++++++++ 4 files changed, 167 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/DeadLock.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/OutClass.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/DeadLockTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/InnerClass1Test.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/DeadLock.java b/src/main/java/cn/byhieg/threadtutorial/char02/DeadLock.java new file mode 100644 index 0000000..547e9a7 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/DeadLock.java @@ -0,0 +1,47 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/4. + * Mail byhieg@gmail.com + */ +public class DeadLock implements Runnable{ + + public String username; + public Object lock1 = new Object(); + public Object lock2 = new Object(); + + public void setFlag(String username){ + this.username = username; + } + public void run() { + if ("a".equals(username)){ + synchronized (lock1){ + try{ + System.out.println("username = " + username); + Thread.sleep(3000); + }catch (InterruptedException e){ + e.printStackTrace(); + } + + synchronized (lock2){ + System.out.println("按照lock1 - > lock2代码顺序执行"); + } + } + } + + if ("b".equals(username)){ + synchronized (lock2){ + try{ + System.out.println("username = " + username); + Thread.sleep(3000); + }catch (InterruptedException e){ + e.printStackTrace(); + } + + synchronized (lock1){ + System.out.println("按 lock2 - > lock1代码顺序执行"); + } + } + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/OutClass.java b/src/main/java/cn/byhieg/threadtutorial/char02/OutClass.java new file mode 100644 index 0000000..fae4b68 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/OutClass.java @@ -0,0 +1,57 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/4. + * Mail byhieg@gmail.com + */ +public class OutClass { + + public static class InnerClass1 { + public void method1(InnerClass2 class2) { + String threadName = Thread.currentThread().getName(); + synchronized (class2) { + System.out.println(threadName + "进入InnerClass1类中的method1方法"); + for (int i = 1; i < 10; i++) { + System.out.println(" i=" + i); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + System.out.println(threadName + "离开InnerClass1类中的method1方法"); + } + } + + synchronized public void method2() { + String threadName = Thread.currentThread().getName(); + System.out.println(threadName + "进入InnerClass1类中的method2方法"); + for (int j = 0; j <= 10; j++) { + System.out.println(" j=" + j); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + + } + } + System.out.println(threadName +" 离开InnerClass1类中的method2方法"); + } + } + + public static class InnerClass2 { + synchronized public void method1() { + String threadName = Thread.currentThread().getName(); + System.out.println(threadName + "进入InnerClass2类中的method1方法"); + for (int k = 1; k < 10; k++) { + System.out.println(" k=" + k); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } + System.out.println(threadName + " 离开InnerClass2类中的method1方法"); + } + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/DeadLockTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/DeadLockTest.java new file mode 100644 index 0000000..daf4e64 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/DeadLockTest.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.DeadLock; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/4. + * Mail byhieg@gmail.com + */ +public class DeadLockTest extends TestCase { + public void testRun() throws Exception { + DeadLock deadLock = new DeadLock(); + deadLock.setFlag("a"); + + Thread threadA = new Thread(deadLock); + threadA.start(); + Thread.sleep(100); + + deadLock.setFlag("b"); + Thread threadB = new Thread(deadLock); + threadB.start(); + + Thread.sleep(1000 * 150); + + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/InnerClass1Test.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/InnerClass1Test.java new file mode 100644 index 0000000..0d6333e --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/InnerClass1Test.java @@ -0,0 +1,36 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.OutClass; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/4. + * Mail byhieg@gmail.com + */ +public class InnerClass1Test extends TestCase { + public void testMethod() throws Exception { + final OutClass.InnerClass1 in1 = new OutClass.InnerClass1(); + final OutClass.InnerClass2 in2 = new OutClass.InnerClass2(); + + new Thread(new Runnable() { + public void run() { + in1.method1(in2); + } + },"T1").start(); + + new Thread(new Runnable() { + public void run() { + in1.method2(); + } + },"T2").start(); + + new Thread(new Runnable() { + public void run() { + in2.method1(); + } + },"T3").start(); + + Thread.sleep(1000 * 10); + } + +} \ No newline at end of file From 742c07ac71f0073c4fba430456d379ebbed7a7ee Mon Sep 17 00:00:00 2001 From: shiqifeng <18581871304@163.com> Date: Wed, 4 Jan 2017 17:46:05 +0800 Subject: [PATCH 007/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial?= =?UTF-8?q?=E5=88=B02.3.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../threadtutorial/char02/PrintString.java | 32 +++++++++++++++++++ .../threadtutorial/char02/RunThread.java | 17 ++++++++++ .../char02test/PrintStringTest.java | 18 +++++++++++ 3 files changed, 67 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/PrintString.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/RunThread.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/PrintStringTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/PrintString.java b/src/main/java/cn/byhieg/threadtutorial/char02/PrintString.java new file mode 100644 index 0000000..f4cadbd --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/PrintString.java @@ -0,0 +1,32 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/4. + * Mail byhieg@gmail.com + */ +public class PrintString implements Runnable { + + private boolean isContinuePrint = true; + public boolean isContinuePrint(){ + return isContinuePrint; + } + + public void setContinuePrint(boolean continuePrint) { + isContinuePrint = continuePrint; + } + + public void printStringMethod(){ + try { + while (isContinuePrint == true){ + System.out.println("run printStringMethod threadName=" + Thread.currentThread().getName()); + Thread.sleep(1000); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + public void run() { + printStringMethod(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/RunThread.java b/src/main/java/cn/byhieg/threadtutorial/char02/RunThread.java new file mode 100644 index 0000000..7050df5 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/RunThread.java @@ -0,0 +1,17 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by shiqifeng on 2017/1/4. + * Mail byhieg@gmail.com + */ +public class RunThread extends Thread{ + private boolean isRunning = true; + + public boolean isRunning(){ + return isRunning; + } + + public void setRunning(boolean isRunning){ + this.isRunning = isRunning; + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/PrintStringTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/PrintStringTest.java new file mode 100644 index 0000000..bf3f2f3 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/PrintStringTest.java @@ -0,0 +1,18 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.PrintString; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/4. + * Mail byhieg@gmail.com + */ +public class PrintStringTest extends TestCase { + public void testPrintStringMethod() throws Exception { + PrintString printStringService = new PrintString(); + new Thread(printStringService).start(); + System.out.println("我要停止他!stopThread=" + Thread.currentThread().getName()); + printStringService.setContinuePrint(false); + } + +} \ No newline at end of file From d5d55064e531bc8e9ceae069335f9ce94175f4c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 4 Jan 2017 02:05:31 +0800 Subject: [PATCH 008/118] =?UTF-8?q?=E2=80=9C=E5=AE=8C=E6=88=90ThreadTutori?= =?UTF-8?q?al=E5=88=B03.0=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../threadtutorial/char02/RunService.java | 22 ++++++++++++++++ .../threadtutorial/char02/RunThread.java | 11 +++++++- .../threadtutorial/char02/SynVolaThreadA.java | 19 ++++++++++++++ .../threadtutorial/char02/SynVolaThreadB.java | 20 +++++++++++++++ .../threadtutorial/char02/VolatileThread.java | 22 ++++++++++++++++ .../char02test/RunServiceTest.java | 25 +++++++++++++++++++ .../char02test/RunThreadTest.java | 21 ++++++++++++++++ .../char02test/VolatileThreadTest.java | 23 +++++++++++++++++ 8 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/RunService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SynVolaThreadA.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/SynVolaThreadB.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/VolatileThread.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/RunServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/RunThreadTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/VolatileThreadTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/RunService.java b/src/main/java/cn/byhieg/threadtutorial/char02/RunService.java new file mode 100644 index 0000000..5fc3547 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/RunService.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/5. + * Mail to byhieg@gmail.com + */ +public class RunService { + + volatile private boolean isContinueRun = true; + + public void runMethod() { + + while (isContinueRun == true) { + } + + System.out.println("停下来了"); + } + + public void stopMethod() { + isContinueRun = false; + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/RunThread.java b/src/main/java/cn/byhieg/threadtutorial/char02/RunThread.java index 7050df5..31d0b6d 100644 --- a/src/main/java/cn/byhieg/threadtutorial/char02/RunThread.java +++ b/src/main/java/cn/byhieg/threadtutorial/char02/RunThread.java @@ -5,7 +5,7 @@ * Mail byhieg@gmail.com */ public class RunThread extends Thread{ - private boolean isRunning = true; + volatile private boolean isRunning = true; public boolean isRunning(){ return isRunning; @@ -14,4 +14,13 @@ public boolean isRunning(){ public void setRunning(boolean isRunning){ this.isRunning = isRunning; } + + @Override + public void run() { + System.out.println("进入run了"); + while (isRunning == true){ + + } + System.out.println("线程被停止"); + } } diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SynVolaThreadA.java b/src/main/java/cn/byhieg/threadtutorial/char02/SynVolaThreadA.java new file mode 100644 index 0000000..9c05626 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SynVolaThreadA.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/5. + * Mail to byhieg@gmail.com + */ +public class SynVolaThreadA extends Thread{ + + private RunService service; + public SynVolaThreadA(RunService service){ + this.service = service; + } + + @Override + public void run() { + super.run(); + service.runMethod(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/SynVolaThreadB.java b/src/main/java/cn/byhieg/threadtutorial/char02/SynVolaThreadB.java new file mode 100644 index 0000000..14f7e15 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/SynVolaThreadB.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/5. + * Mail to byhieg@gmail.com + */ +public class SynVolaThreadB extends Thread{ + + private RunService service; + + public SynVolaThreadB(RunService service){ + this.service = service; + } + + @Override + public void run() { + super.run(); + service.stopMethod(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/VolatileThread.java b/src/main/java/cn/byhieg/threadtutorial/char02/VolatileThread.java new file mode 100644 index 0000000..ddf036b --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/VolatileThread.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char02; + +/** + * Created by byhieg on 17/1/5. + * Mail to byhieg@gmail.com + */ +public class VolatileThread extends Thread{ + volatile public static int count; + + synchronized private static void addCount(){ + for (int i = 0 ; i < 100 ; i++){ + count++; + } + System.out.println("count=" + count); + } + + @Override + public void run() { + super.run(); + addCount(); + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/RunServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/RunServiceTest.java new file mode 100644 index 0000000..721cca8 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/RunServiceTest.java @@ -0,0 +1,25 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.RunService; +import cn.byhieg.threadtutorial.char02.SynVolaThreadA; +import cn.byhieg.threadtutorial.char02.SynVolaThreadB; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/5. + * Mail to byhieg@gmail.com + */ +public class RunServiceTest extends TestCase { + public void testRunMethod() throws Exception { + RunService service = new RunService(); + SynVolaThreadA threadA = new SynVolaThreadA(service); + threadA.start(); + Thread.sleep(1000); + SynVolaThreadB threadB = new SynVolaThreadB(service); + threadB.start(); + System.out.println("已经发起停止的命令了"); + + Thread.sleep(1000); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/RunThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/RunThreadTest.java new file mode 100644 index 0000000..73a8354 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/RunThreadTest.java @@ -0,0 +1,21 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.RunThread; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/5. + * Mail to byhieg@gmail.com + */ +public class RunThreadTest extends TestCase { + public void testRun() throws Exception { + RunThread thread = new RunThread(); + thread.start(); + Thread.sleep(1000); + thread.setRunning(false); + System.out.println("已经赋值为false"); + + Thread.sleep(1000 * 3); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/VolatileThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/VolatileThreadTest.java new file mode 100644 index 0000000..0e92bcf --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/VolatileThreadTest.java @@ -0,0 +1,23 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.VolatileThread; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/5. + * Mail to byhieg@gmail.com + */ +public class VolatileThreadTest extends TestCase { + public void testRun() throws Exception { + VolatileThread[] threads = new VolatileThread[100]; + for (int i = 0 ; i < 100; i++){ + threads[i] = new VolatileThread(); + } + for (int i = 0 ; i < 100 ; i++){ + threads[i].start(); + } + + Thread.sleep(1000 * 15); + } + +} \ No newline at end of file From 02fbd988d26442c9cee747f486ff51b55cac2c51 Mon Sep 17 00:00:00 2001 From: byhieg Date: Thu, 5 Jan 2017 16:44:55 +0800 Subject: [PATCH 009/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/byhieg/threadtutorial/char02/HasSelfPrivateNum.java | 3 +-- src/main/java/cn/byhieg/threadtutorial/char02/MyObject.java | 3 ++- src/main/java/cn/byhieg/threadtutorial/char02/PublicVar.java | 2 +- .../threadtutorialtest/char02test/HasSelfPrivateNumTest.java | 4 +--- .../threadtutorialtest/char02test/PublicVarThreadATest.java | 2 ++ 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/HasSelfPrivateNum.java b/src/main/java/cn/byhieg/threadtutorial/char02/HasSelfPrivateNum.java index bbacd59..a3ee818 100644 --- a/src/main/java/cn/byhieg/threadtutorial/char02/HasSelfPrivateNum.java +++ b/src/main/java/cn/byhieg/threadtutorial/char02/HasSelfPrivateNum.java @@ -8,9 +8,8 @@ public class HasSelfPrivateNum { private int num = 0; - synchronized public void addI(String username){ + public void addI(String username){ try{ - if (username.equals("a")){ num = 100; System.out.println("a set over!"); diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/MyObject.java b/src/main/java/cn/byhieg/threadtutorial/char02/MyObject.java index 2db1be5..c6276e3 100644 --- a/src/main/java/cn/byhieg/threadtutorial/char02/MyObject.java +++ b/src/main/java/cn/byhieg/threadtutorial/char02/MyObject.java @@ -10,7 +10,8 @@ public class MyObject { synchronized public void methodA(){ try{ - System.out.println("begin methodA threadName=" + Thread.currentThread().getName()); + System.out.println("begin methodA threadName=" + Thread.currentThread().getName() + + " begin time =" + System.currentTimeMillis()); Thread.sleep(5000); System.out.println("end"); }catch (InterruptedException e){ diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/PublicVar.java b/src/main/java/cn/byhieg/threadtutorial/char02/PublicVar.java index 7555a4a..d0aa045 100644 --- a/src/main/java/cn/byhieg/threadtutorial/char02/PublicVar.java +++ b/src/main/java/cn/byhieg/threadtutorial/char02/PublicVar.java @@ -21,7 +21,7 @@ synchronized public void setValue(String username,String password){ } } - synchronized public void getValue(){ + public void getValue(){ System.out.println("getValue method thread name=" + Thread.currentThread().getName() + " username=" + username + " password=" + password); } diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/HasSelfPrivateNumTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/HasSelfPrivateNumTest.java index 450d147..5fb3058 100644 --- a/src/test/java/cn/byhieg/threadtutorialtest/char02test/HasSelfPrivateNumTest.java +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/HasSelfPrivateNumTest.java @@ -15,10 +15,8 @@ public void testAddI() throws Exception { HasSelfPrivateNum numB = new HasSelfPrivateNum(); SelfPrivateThreadA threadA = new SelfPrivateThreadA(numA); threadA.start(); - SelfPrivateThreadB threadB = new SelfPrivateThreadB(numA); + SelfPrivateThreadB threadB = new SelfPrivateThreadB(numB); threadB.start(); - Thread.sleep(1000 * 3); } - } \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/PublicVarThreadATest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/PublicVarThreadATest.java index c968c63..b65a76a 100644 --- a/src/test/java/cn/byhieg/threadtutorialtest/char02test/PublicVarThreadATest.java +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/PublicVarThreadATest.java @@ -15,6 +15,8 @@ public void testRun() throws Exception { threadA.start(); Thread.sleep(40); publicVarRef.getValue(); + + Thread.sleep(1000 * 5); } } \ No newline at end of file From 5c27bf247e65de8c99fae1c1317eeff06c78e1e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 6 Dec 2016 00:41:01 +0800 Subject: [PATCH 010/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=9A=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E7=AC=AC=E4=BA=8C=E7=AB=A0=E7=9F=A5=E8=AF=86=E7=82=B9?= =?UTF-8?q?=E6=80=BB=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 + .../char02/ExceptionService.java | 29 + ...06\347\202\271\346\200\273\347\273\223.md" | 534 ++++++++++++++++++ .../char02test/ExceptionServiceTest.java | 27 + .../char02test/SonSynTreadTest.java | 1 - .../char02test/StaticServiceTest.java | 22 +- 6 files changed, 607 insertions(+), 18 deletions(-) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char02/ExceptionService.java create mode 100644 "src/main/java/cn/byhieg/threadtutorial/char02/\345\244\232\347\272\277\347\250\213\347\254\254\344\272\214\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.md" create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char02test/ExceptionServiceTest.java diff --git a/pom.xml b/pom.xml index 51d57e9..b88d83d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,18 @@ cn.byhieg javaturorial 0.1 + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + UTF-8 diff --git a/src/main/java/cn/byhieg/threadtutorial/char02/ExceptionService.java b/src/main/java/cn/byhieg/threadtutorial/char02/ExceptionService.java new file mode 100644 index 0000000..4601da7 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char02/ExceptionService.java @@ -0,0 +1,29 @@ +package cn.byhieg.threadtutorial.char02; + +import java.io.*; + +/** + * Created by byhieg on 17/1/5. + * Mail to byhieg@gmail.com + */ +public class ExceptionService { + + synchronized public void getFile(){ + System.out.println("begin " + System.currentTimeMillis() + " " + Thread.currentThread().getName()); + File file = new File("111"); + try { + Thread.sleep(1000 * 1); + System.out.println(5 / 0); + InputStream in = new FileInputStream(file); + System.out.println("end" + System.currentTimeMillis() + " " + Thread.currentThread().getName()); + + } catch (FileNotFoundException | InterruptedException e) { + try { + Thread.sleep(1000); + } catch (InterruptedException e1) { + e1.printStackTrace(); + } + System.out.println("end Catch" + System.currentTimeMillis() + " " + Thread.currentThread().getName()); + } + } +} diff --git "a/src/main/java/cn/byhieg/threadtutorial/char02/\345\244\232\347\272\277\347\250\213\347\254\254\344\272\214\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.md" "b/src/main/java/cn/byhieg/threadtutorial/char02/\345\244\232\347\272\277\347\250\213\347\254\254\344\272\214\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.md" new file mode 100644 index 0000000..93e02e4 --- /dev/null +++ "b/src/main/java/cn/byhieg/threadtutorial/char02/\345\244\232\347\272\277\347\250\213\347\254\254\344\272\214\347\253\240\347\237\245\350\257\206\347\202\271\346\200\273\347\273\223.md" @@ -0,0 +1,534 @@ +# Java多线程基础——对象及变量并发访问 +在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松。但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的。这样,一个对象同时被多个线程访问,会出现处理的结果和预期不一致的可能。因此,需要了解如何对对象及变量并发访问,写出线程安全的程序,所谓线程安全就是处理的对象及变量的时候是同步处理的,在处理的时候其他线程是不会干扰。本文将从以下几个角度阐述这个问题。所有的代码都在[char02](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/threadtutorial/char02) +1. 对于方法的同步处理 +2. 对于语句块的同步处理 +3. 对类加锁的同步处理 +3. 保证可见性的关键字——volatile + +## 对于方法的同步处理 +对于一个对象的方法,如果有两个线程同时访问,如果不加控制,访问的结果会出乎意料。所以我们需要对方法进行同步处理,让一个线程先访问,等访问结束,在让另一个线程去访问。对于要处理的方法,用`synchronized`修饰该方法。我们下面看一下对比的例子。 +首先是没有同步修饰的方法,看看会有什么意料之外的事情 +``` +public class HasSelfPrivateNum { + private int num = 0; + public void addI(String username){ + try{ + if (username.equals("a")){ + num = 100; + System.out.println("a set over!"); + Thread.sleep(2000); + }else { + num = 200; + System.out.println("b set over!"); + } + System.out.println(username + " num=" + num); + }catch (Exception e){ + e.printStackTrace(); + } + } +} + +public class SelfPrivateThreadA extends Thread{ + private HasSelfPrivateNum num; + public SelfPrivateThreadA(HasSelfPrivateNum num){ + this.num = num; + } + @Override + public void run() { + super.run(); + num.addI("a"); + } +} + +public class SelfPrivateThreadB extends Thread{ + private HasSelfPrivateNum num; + public SelfPrivateThreadB(HasSelfPrivateNum num){ + this.num = num; + } + @Override + public void run() { + super.run(); + num.addI("b"); + } +} +``` +测试的方法如下: +``` +public class HasSelfPrivateNumTest extends TestCase { + public void testAddI() throws Exception { + HasSelfPrivateNum numA = new HasSelfPrivateNum(); +// HasSelfPrivateNum numB = new HasSelfPrivateNum(); + SelfPrivateThreadA threadA = new SelfPrivateThreadA(numA); + threadA.start(); + SelfPrivateThreadB threadB = new SelfPrivateThreadB(numA); + threadB.start(); + + Thread.sleep(1000 * 3); + } + +} +``` +在这个对象中,有一个成员变量num, 如果username是a,则num应该等于100,如果是b,则num应该等于200,threadA与threadB同时去访问addI方法,预期的结果应该是a num=100 b num=200。但是实际的结果如下: +``` +a set over! +b set over! +b num=200 +a num=200 +``` +这是为什么呢?因为threadA先调用addI方法,但是因为传入的参数的是a,所示ThreadA线程休眠2s,这是B线程也已经调用了addI方法,然后将num的值改为了200,这是输出语句输出的是b改之后的num的值也就是200,a的值被b再次修改覆盖了。 +这个方法是线程不安全的,我们给这个方法添加`synchronized`,修改如下: +``` + synchronized public void addI(String username){ + try{ + if (username.equals("a")){ + num = 100; + System.out.println("a set over!"); + Thread.sleep(2000); + }else { + num = 200; + System.out.println("b set over!"); + } + System.out.println(username + " num=" + num); + }catch (Exception e){ + e.printStackTrace(); + } + } +``` +其他地方保持不变,现在我们在看一下,结果: +``` +a set over! +a num=100 +b set over! +b num=200 +``` +这个结果是不是就符合预期的结果,调用的顺序也是一致的。 +用`synchronized`可以保证多线程调用同一个对象的方法的时候,是同步进行的,注意是同一个对象,也就是说`synchronized`的方法是对象锁,锁住的是对象,如果是不同的对象,就没有这个线程不安全的问题。我们在上面的修改的基础上,去掉 +`synchronized`,然后修改测试方法,让两个线程调用不同对象的方法,修改如下: +``` +public class HasSelfPrivateNumTest extends TestCase { + public void testAddI() throws Exception { + HasSelfPrivateNum numA = new HasSelfPrivateNum(); + HasSelfPrivateNum numB = new HasSelfPrivateNum(); + SelfPrivateThreadA threadA = new SelfPrivateThreadA(numA); + threadA.start(); + SelfPrivateThreadB threadB = new SelfPrivateThreadB(numA); + threadB.start(); + Thread.sleep(1000 * 3); + } +} +``` +结果如下: +``` +b set over! +b num=200 +a set over! +a num=100 +``` +因为threadB是不需要休眠的,所以两个线程同时调用的时候,一定是B线程先出结果,这个结果是符合预期的。但是这样是无法证明`synchronized`是对象锁的,只能说明不同线程访问不同对象是不会出现线程不安全的情况的。在补充一个例子来证明:同一个对象,有两个同步方法,但是两个线程分别调用其中一个同步方法,如果返回的结果不是同时出现的,则说明是对象锁,即锁住了一个对象,该对象的其他方法也要等该对象锁释放,才能调用。 +``` +public class MyObject { + + synchronized public void methodA(){ + try{ + System.out.println("begin methodA threadName=" + Thread.currentThread().getName()+ + " begin time =" + System.currentTimeMillis()); + Thread.sleep(5000); + System.out.println("end"); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + synchronized public void methodB(){ + try{ + System.out.println("begin methodB threadName=" + Thread.currentThread().getName() + + " begin time =" + System.currentTimeMillis()); + Thread.sleep(5000); + System.out.println("end"); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} + +public class SynchronizedMethodThread extends Thread{ + + private MyObject object; + + public SynchronizedMethodThread(MyObject object){ + this.object = object; + } + + @Override + public void run() { + super.run(); + if(Thread.currentThread().getName().equals("A")){ + object.methodA(); + }else{ + object.methodB(); + } + } +} +``` +测试方法如下: +``` +public class SynchronizedMethodThreadTest extends TestCase { + public void testRun() throws Exception { + MyObject object = new MyObject(); + SynchronizedMethodThread a = new SynchronizedMethodThread(object); + a.setName("A"); + SynchronizedMethodThread b = new SynchronizedMethodThread(object); + b.setName("B"); + + a.start(); + b.start(); + + Thread.sleep(1000 * 15); + } + +} +``` +A,B两个线程分别调用methodA与methodB, 两个方法也打印出了他们的开始和结束时间。 +结果如下: +``` +begin methodA threadName=A begin time =1483603953885 +end +begin methodB threadName=B begin time =1483603958886 +end +``` +可以看出两个方法是同步调用,一前一后,结果无交叉。说明`synchronized`修饰方法添加的确实是对象锁。 +这样,用`synchronized`修饰的方法,都需要多线程同步调用,但是没用他修饰的方法,多线程还是直接去调用的。也就是说,虽然多线程会同步调用`synchronized`修饰的方法,但是在一个线程同步调用方法的时候,其他线程可能先调用了非同步方法,这个在某些时候会有问题。比如出现脏读。 +A线程先同步调用了set方法,但是可能在set的过程中出现了等待,然后其他线程在get的时候,数据是set还没有执行完的数据。看如下代码: +``` +public class PublicVar { + + public String username = "A"; + public String password = "AA"; + + synchronized public void setValue(String username,String password){ + try{ + this.username = username; + Thread.sleep(3000); + this.password = password; + System.out.println("setValue method thread name=" + Thread.currentThread().getName() + " username=" + + username + " password=" + password); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + public void getValue(){ + System.out.println("getValue method thread name=" + Thread.currentThread().getName() + " username=" + username + + " password=" + password); + } +} + +public class PublicVarThreadA extends Thread { + + private PublicVar publicVar; + public PublicVarThreadA(PublicVar publicVar){ + this.publicVar = publicVar; + } + + @Override + public void run() { + super.run(); + publicVar.setValue("B","BB"); + } +} +``` +看测试的例子: +``` +public class PublicVarThreadATest extends TestCase { + public void testRun() throws Exception { + PublicVar publicVarRef = new PublicVar(); + PublicVarThreadA threadA = new PublicVarThreadA(publicVarRef); + threadA.start(); + Thread.sleep(40); + publicVarRef.getValue(); + Thread.sleep(1000 * 5); + + } + +} +``` +期待的结果应该是"A","AA",或者是"B","BB",然而结果是: +``` +getValue method thread name=main username=B password=AA +setValue method thread name=Thread-0 username=B password=BB +``` +所以,对于同一个对象中的数据读与取,都需要用`synchronized`修饰才能同步。脏读一定会出现在操作对象情况下,多线程"争抢"对象的结果。 +下面,说一些同步方法其他特性,当一个线程得到一个对象锁的时候,他再次请求对象锁,一定会再次得到该对象的锁。这往往出现在一个对象方法里调用这个对象的另一个方法,而这两个方法都是同步的。这样设计是有原因,因为如果不能再次获得这个对象锁的话,很容易造成死锁。这种直接获取锁的方式称之为可重入锁。 +Java中的可重入锁支持在继承中使用,也就是说可以在子类的同步方法中调用父类的同步方法。 +下面,看个例子: +``` +public class FatherSynService { + + public int i = 10; + synchronized public void operateIMainMethod(){ + try{ + i--; + System.out.println("main print i=" +i); + Thread.sleep(100); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} + +public class SonSynService extends FatherSynService{ + + synchronized public void operateISubMethod(){ + try{ + while (i > 0){ + i--; + System.out.println("sub print i=" + i); + Thread.sleep(1000); + this.operateIMainMethod(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} + +public class SonSynTread extends Thread{ + @Override + public void run() { + super.run(); + SonSynService son = new SonSynService(); + son.operateISubMethod(); + } +} +``` +测试的例子如下: +``` +public class SonSynTreadTest extends TestCase { + public void testRun() throws Exception { + SonSynTread thread = new SonSynTread(); + thread.start(); + + Thread.sleep(1000 * 10); + } +} +``` +结果就是i是连续输出的。这说明,当存在父子类继承关系时,子类是完全可以通过"可重入锁"调用父类的同步方法的。但是在继承关系中,同步是不会被继承的,也就是说如果父类的方法是同步的方法,然而子类在覆写该方法的时候,没有加同步的修饰,则子类的方法不算是同步方法。 +关于同步方法还有一点,就是同步方法出现未捕获的异常,则自动释放锁。 + +## 对于语句块的同步处理 +对于上面的同步方法而言,其实是有些弊端的,如果同步方法是需要执行一个很长时间的任务,那么多线程在排队处理同步方法时就会等待很久,但是一个方法中,其实并不是所有的代码都需要同步处理的,只有可能会发生线程不安全的代码才需要同步。这时,可以采用`synchronized`来修饰语句块让关键的代码进行同步。用`synchronized`修饰同步块,其格式如下: +``` +synchronized(对象){ + //语句块 +} +``` +这里的对象,可以是当前类的对象this,也可以是任意的一个Object对象,或者间接继承自Object的对象,只要保证`synchronized`修饰的对象被多线程访问的是同一个,而不是每次调用方法的时候都是新生成就就可以。但是特别注意String对象,因为JVM有String常量池的原因,所以相同内容的字符串实际上就是同一个对象,在用同步语句块的时候尽可能不用String。 +下面,看一个例子来说明同步语句块的用法和与同步方法的区别: + +``` +public class LongTimeTask { + private String getData1; + private String getData2; + + public void doLongTimeTask(){ + try{ + System.out.println("begin task"); + Thread.sleep(3000); + String privateGetData1 = "长时间处理任务后从远程返回的值 1 threadName=" + Thread.currentThread().getName(); + String privateGetData2 = "长时间处理任务后从远程返回的值 2 threadName=" + Thread.currentThread().getName(); + + synchronized (this){ + getData1 = privateGetData1; + getData2 = privateGetData2; + } + + System.out.println(getData1); + System.out.println(getData2); + System.out.println("end task"); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} + +public class LongTimeServiceThreadA extends Thread{ + + private LongTimeTask task; + public LongTimeServiceThreadA(LongTimeTask task){ + super(); + this.task = task; + } + + @Override + public void run() { + super.run(); + CommonUtils.beginTime1 = System.currentTimeMillis(); + task.doLongTimeTask(); + CommonUtils.endTime1 = System.currentTimeMillis(); + } +} + +public class LongTimeServiceThreadB extends Thread{ + + private LongTimeTask task; + public LongTimeServiceThreadB(LongTimeTask task){ + super(); + this.task = task; + } + + @Override + public void run() { + super.run(); + CommonUtils.beginTime2 = System.currentTimeMillis(); + task.doLongTimeTask(); + CommonUtils.endTime2 = System.currentTimeMillis(); + } +} +``` +测试的代码如下: +``` +public class LongTimeServiceThreadATest extends TestCase { + + public void testRun() throws Exception { + LongTimeTask task = new LongTimeTask(); + LongTimeServiceThreadA threadA = new LongTimeServiceThreadA(task); + threadA.start(); + + LongTimeServiceThreadB threadB = new LongTimeServiceThreadB(task); + threadB.start(); + + try{ + Thread.sleep(1000 * 10); + }catch (InterruptedException e){ + e.printStackTrace(); + } + + long beginTime = CommonUtils.beginTime1; + if (CommonUtils.beginTime2 < CommonUtils.beginTime1){ + beginTime = CommonUtils.beginTime2; + } + + long endTime = CommonUtils.endTime1; + if (CommonUtils.endTime2 < CommonUtils.endTime1){ + endTime = CommonUtils.endTime2; + } + System.out.println("耗时:" + ((endTime - beginTime) / 1000)); + + Thread.sleep(1000 * 20); + } + +} +``` +结果如下: +``` +begin task +begin task +长时间处理任务后从远程返回的值 1 threadName=Thread-1 +长时间处理任务后从远程返回的值 2 threadName=Thread-1 +end task +长时间处理任务后从远程返回的值 1 threadName=Thread-1 +长时间处理任务后从远程返回的值 2 threadName=Thread-1 +end task +耗时:3 +``` +两个线程并发处理耗时任务只用了3s, 因为只在赋值的时候进行同步处理,同步语句块以外的部分都是多个线程异步处理的。 +下面,说一下同步语句块的一些特性: +1. 当多个线程同时执行`synchronized(x){}`同步代码块时呈同步效果。 +2. 当其他线程执行x对象中的`synchronized`同步方法时呈同步效果。 +3. 当其他线程执行x对象中的`synchronized(this)`代码块时也呈现同步效果。 + +细说一下每个特性,第一个特性上面的例子已经阐述了,就不多说了。第二个特性,因为同步语句块也是对象锁,所有当对x加锁的时候,x对象内的同步方法也呈现同步效果,当x为this的时候,该对象内的其他同步方法也要等待同步语句块执行完,才能执行。第三个特性和上面x为this是不一样的,第三个特性说的是,x对象中有一个方法,该方法中有一个`synchronized(this)`的语句块的时候,也呈现同步效果。即A线程调用了对x加锁的同步语句块的方法,B线程在调用该x对象的`synchronized(this)`代码块是有先后的同步关系。 + +上面说同步语句块比同步方法在某些方法中执行更有效率,同步语句块还有一个优点,就是如果两个方法都是同步方法,第一个方法无限在执行的时候,第二个方法就永远不会被执行。这时可以对两个方法做同步语句块的处理,设置不同的锁对象,则可以实现两个方法异步执行。 + +## 对类加锁的同步处理 +和对象加锁的同步处理一致,对类加锁的方式也有两种,一种是`synchronized`修饰静态方法,另一种是使用`synchronized(X.class)`同步语句块。在执行上看,和对象锁一致都是同步执行的效果,但是和对象锁却有本质的不同,对对象加锁是访问同一个对象的时候成同步的状态,不同的对象就不会。但是对类加锁是用这个类的静态方法都是呈现同步状态。 +下面,看这个例子: +``` +public class StaticService { + synchronized public static void printA(){ + try{ + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 进入printA"); + Thread.sleep(1000 * 3); + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 离开printA"); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + synchronized public static void printB(){ + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 进入printB"); + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 离开printB"); + } + + synchronized public void printC(){ + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 进入printC"); + System.out.println(" 线程名称为:" + Thread.currentThread().getName() + + " 在 " + System.currentTimeMillis() + " 离开printC"); + } +} +``` +测试方法如下: +``` +public class StaticServiceTest extends TestCase { + + public void testPrint() throws Exception{ + new Thread(new Runnable() { + public void run() { + StaticService.printA(); + } + }).start(); + + new Thread(new Runnable() { + public void run() { + StaticService.printB(); + } + }).start(); + + new Thread(new Runnable() { + public void run() { + new StaticService().printC(); + } + }).start(); + + Thread.sleep(1000 * 3); + } + +} +``` +结果如下: +``` + 线程名称为:Thread-0 在 1483630533783 进入printA + 线程名称为:Thread-2 在 1483630533783 进入printC + 线程名称为:Thread-2 在 1483630533783 离开printC + 线程名称为:Thread-0 在 1483630536786 离开printA + 线程名称为:Thread-1 在 1483630536787 进入printB + 线程名称为:Thread-1 在 1483630536787 离开printB +``` +很明显的看出来,对类加锁和对对象加锁两者方法是异步执行的,而对类加锁的两个方法是呈现同步执行。 +其特性也和同步对象锁一样。 + +关于同步加锁的简单使用的介绍就到这里了。最后还有注意一点,锁对象锁的是该对象的内存地址,其存储的内容改变,并不会让多线程并发的时候认为这是不同的锁。所以改变锁对象的内容,并不会同步失效。 + +## 保证可见性的关键字——volatile +在多线程争抢对象的时候,处理该对象的变量的方式是在主内存中读取该变量的值到线程私有的内存中,然后对该变量做处理,处理后将值在写入到主内存中。上面举的例子,之所以出现结果与预期不一致都是因为线程自己将值复制到自己的私有栈后修改结果而不知道其他线程的修改结果。如果我们不用同步的话,我们就需要一个能保持可见的,知道其他线程修改结果的方法。JDK提供了`volatile`关键字,来保持可见性,关键字volatile的作用是强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量值。但是该关键字并不能保证原子性,以争抢一个对象中的count变量来看下图的具体说明: +![变量在线程私有栈与主内存的关系](http://images.cnblogs.com/cnblogs_com/aigongsi/201204/201204011757234696.jpg) +> java 垃圾回收整理一文中,描述了jvm运行时刻内存的分配。其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量的值,在修改完之后的某一个时刻(线程退出之前),自动把线程变量副本的值回写到对象在堆中变量。这样在堆中的对象的值就产生变化了。 + +volatile在此过程中的具体说明如下: +>read and load 从主存复制变量到当前工作内存 +>use and assign 执行代码,改变共享变量值 +>store and write 用工作内存数据刷新主存相关内容 +>其中use and assign 可以多次出现 +>但是这一些操作并不是原子性,也就是 在read load之后,如果主内存count变量发生修改之后,线程工作内存中的值由于已经加载,不会产生对应的变化,所以计算出来的结果会和预期不一样对于volatile修饰的变量,jvm虚拟机只是保证从主内存加载到线程工作内存的值是最新的例如假如线程1,线程2 在进行read,load 操作中,发现主内存中count的值都是5,那么都会加载这个最新的值在线程1堆count进行修改之后,会write到主内存中,主内存中的count变量就会变为6线程2由于已经进行read,load操作,在进行运算之后,也会更新主内存count的变量值为6导致两个线程及时用volatile关键字修改之后,还是会存在并发的情况。 + +上述对于volatile的解析均摘自[java中volatile关键字的含义](http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html) + +## 总结 +至此,关于Java同步的知识就告一段落了,上文讲的都是比较粗浅的用法,我放在github的代码中有更多的例子,地址是:[char02](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/threadtutorial/char02) +关于多线程通信的知识就放在了char03的代码中。 diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/ExceptionServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/ExceptionServiceTest.java new file mode 100644 index 0000000..6b0f8f7 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/ExceptionServiceTest.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorialtest.char02test; + +import cn.byhieg.threadtutorial.char02.ExceptionService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/5. + * Mail to byhieg@gmail.com + */ +public class ExceptionServiceTest extends TestCase { + + + public void testGetFile() throws Exception{ + ExceptionService service = new ExceptionService(); + + new Thread(()->{ + service.getFile(); + }).start(); + Thread.sleep(100); + new Thread(()->{ + service.getFile(); + }).start(); + + Thread.sleep(1000 * 10); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/SonSynTreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SonSynTreadTest.java index bf62a0a..a486a78 100644 --- a/src/test/java/cn/byhieg/threadtutorialtest/char02test/SonSynTreadTest.java +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/SonSynTreadTest.java @@ -14,5 +14,4 @@ public void testRun() throws Exception { Thread.sleep(1000 * 10); } - } \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char02test/StaticServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char02test/StaticServiceTest.java index dc77044..c1eff6f 100644 --- a/src/test/java/cn/byhieg/threadtutorialtest/char02test/StaticServiceTest.java +++ b/src/test/java/cn/byhieg/threadtutorialtest/char02test/StaticServiceTest.java @@ -12,23 +12,11 @@ public class StaticServiceTest extends TestCase { public void testPrint() throws Exception{ - new Thread(new Runnable() { - public void run() { - StaticService.printA(); - } - }).start(); - - new Thread(new Runnable() { - public void run() { - StaticService.printB(); - } - }).start(); - - new Thread(new Runnable() { - public void run() { - new StaticService().printC(); - } - }).start(); + new Thread(StaticService::printA).start(); + + new Thread(StaticService::printB).start(); + + new Thread(() -> new StaticService().printC()).start(); Thread.sleep(1000 * 3); } From e942398e603e9336933b1505e709c4a587c9c81d Mon Sep 17 00:00:00 2001 From: byhieg Date: Mon, 9 Jan 2017 11:40:40 +0800 Subject: [PATCH 011/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Java=E5=8F=8D?= =?UTF-8?q?=E5=B0=84=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reflectiontutorial/ExampleObject.java | 57 +++++++++++++++ .../reflectiontutorial/FatherObject.java | 17 +++++ .../ExampleObjectTest.java | 71 +++++++++++++++++++ 3 files changed, 145 insertions(+) create mode 100644 src/main/java/cn/byhieg/reflectiontutorial/ExampleObject.java create mode 100644 src/main/java/cn/byhieg/reflectiontutorial/FatherObject.java create mode 100644 src/test/java/cn/byhieg/reflectiontutorialtest/ExampleObjectTest.java diff --git a/src/main/java/cn/byhieg/reflectiontutorial/ExampleObject.java b/src/main/java/cn/byhieg/reflectiontutorial/ExampleObject.java new file mode 100644 index 0000000..0097992 --- /dev/null +++ b/src/main/java/cn/byhieg/reflectiontutorial/ExampleObject.java @@ -0,0 +1,57 @@ +package cn.byhieg.reflectiontutorial; + +/** + * Created by shiqifeng on 2017/1/9. + * Mail byhieg@gmail.com + */ +public class ExampleObject extends FatherObject{ + public int age = 30; + public String name = "byhieg"; + private Integer score = 60; + + public void printName(){ + System.out.println(name); + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getScore() { + return score; + } + + public void setScore(Integer score) { + this.score = score; + } + + + public ExampleObject(){ + + } + + public ExampleObject(String name){ + + } + + public ExampleObject(int age,Integer score){ + + } + + @Override + public void doSomething() { + super.doSomething(); + } +} diff --git a/src/main/java/cn/byhieg/reflectiontutorial/FatherObject.java b/src/main/java/cn/byhieg/reflectiontutorial/FatherObject.java new file mode 100644 index 0000000..4684442 --- /dev/null +++ b/src/main/java/cn/byhieg/reflectiontutorial/FatherObject.java @@ -0,0 +1,17 @@ +package cn.byhieg.reflectiontutorial; + +/** + * Created by shiqifeng on 2017/1/9. + * Mail byhieg@gmail.com + */ +public class FatherObject implements Runnable{ + + + public void run() { + System.out.println("运行中......"); + } + + public void doSomething(){ + System.out.println("做事情......"); + } +} diff --git a/src/test/java/cn/byhieg/reflectiontutorialtest/ExampleObjectTest.java b/src/test/java/cn/byhieg/reflectiontutorialtest/ExampleObjectTest.java new file mode 100644 index 0000000..f7f42f2 --- /dev/null +++ b/src/test/java/cn/byhieg/reflectiontutorialtest/ExampleObjectTest.java @@ -0,0 +1,71 @@ +package cn.byhieg.reflectiontutorialtest; + +import cn.byhieg.reflectiontutorial.ExampleObject; +import junit.framework.TestCase; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; + +/** + * Created by shiqifeng on 2017/1/9. + * Mail byhieg@gmail.com + */ +public class ExampleObjectTest extends TestCase { + + public void testReflect()throws Exception{ + Class exampleObjectClass = ExampleObject.class; + //得到类的名字 + String fullClassName = exampleObjectClass.getName(); + String simpleClassName = exampleObjectClass.getSimpleName(); + + System.out.println(fullClassName); + System.out.println(simpleClassName); + + //输出类的public方法 + Method[] methods = exampleObjectClass.getMethods(); + for (Method method : methods){ + System.out.println("method = "+ method.getName()); + } + + //得到类的关键字 + int modifiers = exampleObjectClass.getMethods()[0].getModifiers(); + System.out.println(Modifier.isPublic(modifiers)); + System.out.println(Modifier.isPrivate(modifiers)); + + + //得到包信息 + Package aPackage = exampleObjectClass.getPackage(); + System.out.println(aPackage); + + //得到父类 + Class superClass = exampleObjectClass.getSuperclass(); + System.out.println(superClass.getSimpleName()); + + + //得到接口 + Class[] classes = superClass.getInterfaces(); + System.out.println("父类的接口" + classes[0]); + + //构造器 + Constructor[] constructors = exampleObjectClass.getConstructors(); + for (Constructor constructor : constructors){ + System.out.println(constructor.toString()); + } + + //得到变量 + Field[] fields = exampleObjectClass.getFields(); + for (Field field : fields){ + System.out.println(field.toString()); + } + + //得到注解 + Annotation[] annotations = exampleObjectClass.getMethod("doSomething").getAnnotations(); + for (Annotation annotation : annotations){ + System.out.println(annotation.toString()); + } + } + +} \ No newline at end of file From 3b7bc7894840eeb6f28c71839d2bc289e432a9e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Mon, 9 Jan 2017 22:42:23 +0800 Subject: [PATCH 012/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=8D=E5=B0=84?= =?UTF-8?q?=E4=BE=8B=E5=AD=90=E5=88=B0reflectiontutorial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reflectiontutorial/AnnotationObject.java | 21 ++++++ .../reflectiontutorial/ExampleObject.java | 16 +++-- .../reflectiontutorial/FatherObject.java | 7 +- .../reflectiontutorial/MyAnnotation.java | 18 +++++ .../AnnotationObjectTest.java | 66 +++++++++++++++++++ .../ExampleObjectTest.java | 47 +++++++++++-- 6 files changed, 158 insertions(+), 17 deletions(-) create mode 100644 src/main/java/cn/byhieg/reflectiontutorial/AnnotationObject.java create mode 100644 src/main/java/cn/byhieg/reflectiontutorial/MyAnnotation.java create mode 100644 src/test/java/cn/byhieg/reflectiontutorialtest/AnnotationObjectTest.java diff --git a/src/main/java/cn/byhieg/reflectiontutorial/AnnotationObject.java b/src/main/java/cn/byhieg/reflectiontutorial/AnnotationObject.java new file mode 100644 index 0000000..fdacd5f --- /dev/null +++ b/src/main/java/cn/byhieg/reflectiontutorial/AnnotationObject.java @@ -0,0 +1,21 @@ +package cn.byhieg.reflectiontutorial; + +/** + * Created by byhieg on 17/1/9. + * Mail to byhieg@gmail.com + */ +@MyAnnotation(name="byhieg",value = "hello world") +public class AnnotationObject { + + @MyAnnotation(name="field",value = "变量") + public String field; + + @MyAnnotation(name="method",value = "方法") + public void doSomeThing(){ + System.out.println("做一些事情"); + } + + public void doOtherThing(@MyAnnotation(name="param",value = "参数") String param){ + + } +} diff --git a/src/main/java/cn/byhieg/reflectiontutorial/ExampleObject.java b/src/main/java/cn/byhieg/reflectiontutorial/ExampleObject.java index 0097992..b109bb2 100644 --- a/src/main/java/cn/byhieg/reflectiontutorial/ExampleObject.java +++ b/src/main/java/cn/byhieg/reflectiontutorial/ExampleObject.java @@ -4,12 +4,12 @@ * Created by shiqifeng on 2017/1/9. * Mail byhieg@gmail.com */ -public class ExampleObject extends FatherObject{ +public class ExampleObject extends FatherObject { public int age = 30; public String name = "byhieg"; private Integer score = 60; - public void printName(){ + public void printName() { System.out.println(name); } @@ -37,16 +37,15 @@ public void setScore(Integer score) { this.score = score; } - - public ExampleObject(){ + public ExampleObject() { } - public ExampleObject(String name){ + public ExampleObject(String name) { } - public ExampleObject(int age,Integer score){ + public ExampleObject(int age, Integer score) { } @@ -54,4 +53,9 @@ public ExampleObject(int age,Integer score){ public void doSomething() { super.doSomething(); } + + @Override + public void run() { + System.out.println("run......"); + } } diff --git a/src/main/java/cn/byhieg/reflectiontutorial/FatherObject.java b/src/main/java/cn/byhieg/reflectiontutorial/FatherObject.java index 4684442..3e933b4 100644 --- a/src/main/java/cn/byhieg/reflectiontutorial/FatherObject.java +++ b/src/main/java/cn/byhieg/reflectiontutorial/FatherObject.java @@ -4,13 +4,10 @@ * Created by shiqifeng on 2017/1/9. * Mail byhieg@gmail.com */ -public class FatherObject implements Runnable{ +public abstract class FatherObject implements Runnable{ - public void run() { - System.out.println("运行中......"); - } - + protected String father = ""; public void doSomething(){ System.out.println("做事情......"); } diff --git a/src/main/java/cn/byhieg/reflectiontutorial/MyAnnotation.java b/src/main/java/cn/byhieg/reflectiontutorial/MyAnnotation.java new file mode 100644 index 0000000..a66f4fd --- /dev/null +++ b/src/main/java/cn/byhieg/reflectiontutorial/MyAnnotation.java @@ -0,0 +1,18 @@ +package cn.byhieg.reflectiontutorial; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Created by byhieg on 17/1/9. + * Mail to byhieg@gmail.com + */ + +@Retention(RetentionPolicy.RUNTIME) +public @interface MyAnnotation { + public String name(); + public String value(); + +} diff --git a/src/test/java/cn/byhieg/reflectiontutorialtest/AnnotationObjectTest.java b/src/test/java/cn/byhieg/reflectiontutorialtest/AnnotationObjectTest.java new file mode 100644 index 0000000..8a5ae2b --- /dev/null +++ b/src/test/java/cn/byhieg/reflectiontutorialtest/AnnotationObjectTest.java @@ -0,0 +1,66 @@ +package cn.byhieg.reflectiontutorialtest; + +import cn.byhieg.reflectiontutorial.AnnotationObject; +import cn.byhieg.reflectiontutorial.MyAnnotation; +import junit.framework.TestCase; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +/** + * Created by byhieg on 17/1/9. + * Mail to byhieg@gmail.com + */ +public class AnnotationObjectTest extends TestCase { + + public void testAnnotation() throws Exception{ + Class clz = AnnotationObject.class; + Annotation[] annotationsInClass = clz.getAnnotations(); + for (Annotation annotation : annotationsInClass){ + if (annotation instanceof MyAnnotation){ + MyAnnotation myAnnotation = (MyAnnotation)annotation; + System.out.println("name: " + myAnnotation.name()); + System.out.println("value:" + myAnnotation.value()); + } + } + + Method method = clz.getMethod("doSomeThing"); + Annotation[] annotationsInMethod = method.getDeclaredAnnotations(); + for (Annotation annotation : annotationsInMethod){ + if (annotation instanceof MyAnnotation){ + MyAnnotation myAnnotation = (MyAnnotation)annotation; + System.out.println("name: " + myAnnotation.name()); + System.out.println("value:" + myAnnotation.value()); + } + } + + Field field = clz.getField("field"); + Annotation[] annotationsInField = field.getDeclaredAnnotations(); + for (Annotation annotation : annotationsInField){ + if (annotation instanceof MyAnnotation){ + MyAnnotation myAnnotation = (MyAnnotation)annotation; + System.out.println("name: " + myAnnotation.name()); + System.out.println("value:" + myAnnotation.value()); + } + } + + Method method1 = clz.getMethod("doOtherThing",String.class); + Annotation[][] annotationInParam = method1.getParameterAnnotations(); + Class[] params = method1.getParameterTypes(); + int i = 0; + for (Annotation[] annotations: annotationInParam){ + Class para = params[i++]; + for (Annotation annotation : annotations){ + if(annotation instanceof MyAnnotation){ + MyAnnotation myAnnotation = (MyAnnotation) annotation; + System.out.println("param: " + para.getName()); + System.out.println("name : " + myAnnotation.name()); + System.out.println("value :" + myAnnotation.value()); + } + + } + } + + } +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/reflectiontutorialtest/ExampleObjectTest.java b/src/test/java/cn/byhieg/reflectiontutorialtest/ExampleObjectTest.java index f7f42f2..0693a4d 100644 --- a/src/test/java/cn/byhieg/reflectiontutorialtest/ExampleObjectTest.java +++ b/src/test/java/cn/byhieg/reflectiontutorialtest/ExampleObjectTest.java @@ -16,7 +16,7 @@ public class ExampleObjectTest extends TestCase { public void testReflect()throws Exception{ - Class exampleObjectClass = ExampleObject.class; + Class exampleObjectClass = Class.forName("cn.byhieg.reflectiontutorial.ExampleObject"); //得到类的名字 String fullClassName = exampleObjectClass.getName(); String simpleClassName = exampleObjectClass.getSimpleName(); @@ -30,6 +30,20 @@ public void testReflect()throws Exception{ System.out.println("method = "+ method.getName()); } + Method method = exampleObjectClass.getMethod("setAge",int.class); + System.out.println(method.getName()); + for (Class clz : method.getParameterTypes()){ + System.out.println("方法的参数" + clz.getName()); + } + System.out.println(method.getReturnType().getName()); + + System.out.println(method.invoke(exampleObjectClass.newInstance(),1)); + + + + + + //得到类的关键字 int modifiers = exampleObjectClass.getMethods()[0].getModifiers(); System.out.println(Modifier.isPublic(modifiers)); @@ -43,7 +57,9 @@ public void testReflect()throws Exception{ //得到父类 Class superClass = exampleObjectClass.getSuperclass(); System.out.println(superClass.getSimpleName()); - + System.out.println("父类是不是抽象类 " + Modifier.isAbstract(superClass.getModifiers())); + Field field2 = superClass.getDeclaredField("father"); + System.out.println(field2.getName()); //得到接口 Class[] classes = superClass.getInterfaces(); @@ -51,18 +67,37 @@ public void testReflect()throws Exception{ //构造器 Constructor[] constructors = exampleObjectClass.getConstructors(); - for (Constructor constructor : constructors){ - System.out.println(constructor.toString()); + for (int i = 0;i < constructors.length;i++){ + Class[] parameterTypes = constructors[i].getParameterTypes(); + System.out.println("构造器参数如下========================"); + for (Class clz : parameterTypes){ + System.out.println("参数类型 " + clz.toString()); + } } + //得到构造器的参数类型 + Constructor constructor = exampleObjectClass.getConstructor(int.class,Integer.class); + System.out.println(constructor.getParameterTypes()[0].toString()); + System.out.println(constructor.toString()); + + Constructor constructor1 = exampleObjectClass.getConstructor(String.class); + System.out.println(constructor1.newInstance("byhieg")); + //得到变量 Field[] fields = exampleObjectClass.getFields(); for (Field field : fields){ - System.out.println(field.toString()); + System.out.println("变量为: " + field.getName()); } + Field field1 = exampleObjectClass.getField("age"); + System.out.println("变量为:" + field1.toString()); + + ExampleObject object = ((ExampleObject) constructor1.newInstance("byhieg")); + System.out.println("原先的age是 " + object.age); + field1.set(object,10); + System.out.println("更改之后的age是" + object.age); //得到注解 - Annotation[] annotations = exampleObjectClass.getMethod("doSomething").getAnnotations(); + Annotation[] annotations = exampleObjectClass.getAnnotations(); for (Annotation annotation : annotations){ System.out.println(annotation.toString()); } From 2fe1a4af8cdeef4d2e238ccf4a561dab3bb944a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Mon, 9 Jan 2017 23:58:56 +0800 Subject: [PATCH 013/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=8D=E5=B0=84?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=B3=9B=E5=9E=8B=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reflectiontutorial/GenericObject.java | 19 ++++++ .../cn/byhieg/reflectiontutorial/MyList.java | 31 ++++++++++ .../GenericObjectTest.java | 59 +++++++++++++++++++ .../reflectiontutorialtest/MyListTest.java | 16 +++++ 4 files changed, 125 insertions(+) create mode 100644 src/main/java/cn/byhieg/reflectiontutorial/GenericObject.java create mode 100644 src/main/java/cn/byhieg/reflectiontutorial/MyList.java create mode 100644 src/test/java/cn/byhieg/reflectiontutorialtest/GenericObjectTest.java create mode 100644 src/test/java/cn/byhieg/reflectiontutorialtest/MyListTest.java diff --git a/src/main/java/cn/byhieg/reflectiontutorial/GenericObject.java b/src/main/java/cn/byhieg/reflectiontutorial/GenericObject.java new file mode 100644 index 0000000..dd74aca --- /dev/null +++ b/src/main/java/cn/byhieg/reflectiontutorial/GenericObject.java @@ -0,0 +1,19 @@ +package cn.byhieg.reflectiontutorial; + +import java.util.List; + +/** + * Created by byhieg on 17/1/9. + * Mail to byhieg@gmail.com + */ +public class GenericObject { + public List lists; + + public List getLists() { + return lists; + } + + public void setLists(List lists) { + this.lists = lists; + } +} diff --git a/src/main/java/cn/byhieg/reflectiontutorial/MyList.java b/src/main/java/cn/byhieg/reflectiontutorial/MyList.java new file mode 100644 index 0000000..884897a --- /dev/null +++ b/src/main/java/cn/byhieg/reflectiontutorial/MyList.java @@ -0,0 +1,31 @@ +package cn.byhieg.reflectiontutorial; + +import java.lang.reflect.Array; +import java.util.List; + +/** + * Created by byhieg on 17/1/9. + * Mail to byhieg@gmail.com + */ +public class MyList { + + public List lists; + public List stringLists ; + + + public List getStringLists() { + return stringLists; + } + + public void setStringLists(List stringLists) { + this.stringLists = stringLists; + } + + public void add(T t){ + lists.add(t); + } + + public T get(int index){ + return lists.get(index); + } +} diff --git a/src/test/java/cn/byhieg/reflectiontutorialtest/GenericObjectTest.java b/src/test/java/cn/byhieg/reflectiontutorialtest/GenericObjectTest.java new file mode 100644 index 0000000..0d44148 --- /dev/null +++ b/src/test/java/cn/byhieg/reflectiontutorialtest/GenericObjectTest.java @@ -0,0 +1,59 @@ +package cn.byhieg.reflectiontutorialtest; + +import cn.byhieg.reflectiontutorial.GenericObject; +import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; +import junit.framework.TestCase; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.List; + +/** + * Created by byhieg on 17/1/9. + * Mail to byhieg@gmail.com + */ +public class GenericObjectTest extends TestCase { + + public void testGeneric()throws Exception{ + Class clz = GenericObject.class; + Method getMethod = clz.getMethod("getLists"); + Type genericType = getMethod.getGenericReturnType(); + if(genericType instanceof ParameterizedType){ + ParameterizedType parameterizedType = ((ParameterizedType) genericType); + Type[] types = parameterizedType.getActualTypeArguments(); + for (Type type : types){ + Class actualClz = ((Class) type); + System.out.println("参数化类型为 : " + actualClz); + } + } + + Method setMethod = clz.getMethod("setLists", List.class); + Type[] genericParameterTypes = setMethod.getGenericParameterTypes(); + for (Type genericParameterType: genericParameterTypes){ + System.out.println("GenericParameterTypes为 : " + genericParameterType.getTypeName()); + if(genericParameterType instanceof ParameterizedType){ + ParameterizedType parameterizedType = ((ParameterizedType) genericParameterType); + System.out.println("ParameterizedType为 :" + parameterizedType.getTypeName()); + Type types[] = parameterizedType.getActualTypeArguments(); + for (Type type : types){ + System.out.println("参数化类型为 : " + ((Class) type).getName()); + } + } + + } + + Field field = clz.getField("lists"); + Type type = field.getGenericType(); + if (type instanceof ParameterizedType){ + ParameterizedType parameterizedType = ((ParameterizedType) type); + Type [] types = parameterizedType.getActualTypeArguments(); + for (Type type1 : types) { + System.out.println("参数化类型 : " + ((Class) type1).getTypeName()); + } + } + + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/reflectiontutorialtest/MyListTest.java b/src/test/java/cn/byhieg/reflectiontutorialtest/MyListTest.java new file mode 100644 index 0000000..8822047 --- /dev/null +++ b/src/test/java/cn/byhieg/reflectiontutorialtest/MyListTest.java @@ -0,0 +1,16 @@ +package cn.byhieg.reflectiontutorialtest; + +import cn.byhieg.reflectiontutorial.MyList; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/9. + * Mail to byhieg@gmail.com + */ +public class MyListTest extends TestCase { + + public void testGeneric() throws Exception{ + Class clz = MyList.class; + System.out.println(clz.getTypeParameters()[0]); + } +} \ No newline at end of file From 9b53efa86e70a1058e375b61f476bcf47c5f1859 Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 10 Jan 2017 14:43:08 +0800 Subject: [PATCH 014/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Threadtutorial?= =?UTF-8?q?=E5=88=B03.1.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../byhieg/threadtutorial/char03/MyList.java | 20 +++++++++++ .../char03/NotifyServiceThread.java | 19 ++++++++++ .../threadtutorial/char03/NotifyThread.java | 33 +++++++++++++++++ .../byhieg/threadtutorial/char03/Service.java | 35 +++++++++++++++++++ .../threadtutorial/char03/ServiceThread.java | 20 +++++++++++ .../threadtutorial/char03/WaitThread.java | 30 ++++++++++++++++ .../char03test/ServiceThreadTest.java | 20 +++++++++++ .../char03test/WaitThreadTest.java | 22 ++++++++++++ 8 files changed, 199 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/MyList.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/NotifyServiceThread.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/NotifyThread.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/Service.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/ServiceThread.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/WaitThread.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char03test/ServiceThreadTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char03test/WaitThreadTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/MyList.java b/src/main/java/cn/byhieg/threadtutorial/char03/MyList.java new file mode 100644 index 0000000..2cae6bd --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/MyList.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorial.char03; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +public class MyList { + private static List list = new ArrayList(); + + public static void add(){ + list.add("anyString"); + } + + public static int size(){ + return list.size(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/NotifyServiceThread.java b/src/main/java/cn/byhieg/threadtutorial/char03/NotifyServiceThread.java new file mode 100644 index 0000000..e5fda17 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/NotifyServiceThread.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +public class NotifyServiceThread extends Thread{ + private Object lock; + public NotifyServiceThread(Object lock){ + this.lock = lock; + } + + @Override + public void run() { + super.run(); + Service service = new Service(); + service.synNotifyMethod(lock); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/NotifyThread.java b/src/main/java/cn/byhieg/threadtutorial/char03/NotifyThread.java new file mode 100644 index 0000000..a8e377c --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/NotifyThread.java @@ -0,0 +1,33 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +public class NotifyThread extends Thread{ + private Object lock; + public NotifyThread(Object lock){ + super(); + this.lock = lock; + } + + @Override + public void run() { + super.run(); + synchronized (lock){ + for (int i = 0 ; i < 10;i++){ + MyList.add(); + if (MyList.size() == 5) { + lock.notify(); + System.out.println("已经发出了通知"); + } + System.out.println("添加了 " + (i + 1) + " 个"); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/Service.java b/src/main/java/cn/byhieg/threadtutorial/char03/Service.java new file mode 100644 index 0000000..fef4e12 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/Service.java @@ -0,0 +1,35 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +//对应3.1.4 +public class Service { + public void testMethod(Object lock){ + try{ + synchronized (lock){ + System.out.println("begin wait()"); + lock.wait(); + System.out.println(" end wait()"); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + public void synNotifyMethod(Object lock){ + try{ + synchronized (lock){ + System.out.println("begin notify() ThreadName=" + Thread.currentThread().getName() + + " time=" +System.currentTimeMillis()); + lock.notify(); + Thread.sleep(1000 * 5); + System.out.println("end notify() ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/ServiceThread.java b/src/main/java/cn/byhieg/threadtutorial/char03/ServiceThread.java new file mode 100644 index 0000000..4292485 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/ServiceThread.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +public class ServiceThread extends Thread{ + private Object lock; + + public ServiceThread(Object lock){ + this.lock = lock; + } + + @Override + public void run() { + super.run(); + Service service = new Service(); + service.testMethod(lock); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/WaitThread.java b/src/main/java/cn/byhieg/threadtutorial/char03/WaitThread.java new file mode 100644 index 0000000..54ad0bc --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/WaitThread.java @@ -0,0 +1,30 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +public class WaitThread extends Thread{ + private Object lock; + public WaitThread(Object lock){ + super(); + this.lock = lock; + } + + @Override + public void run() { + super.run(); + try{ + synchronized (lock){ + if (MyList.size() != 5){ + System.out.println("开始 wait time =" + System.currentTimeMillis()); + lock.wait(); + System.out.println("结束 wait time = " + System.currentTimeMillis()); + } + + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char03test/ServiceThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char03test/ServiceThreadTest.java new file mode 100644 index 0000000..3735065 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char03test/ServiceThreadTest.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorialtest.char03test; + +import cn.byhieg.threadtutorial.char03.ServiceThread; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +public class ServiceThreadTest extends TestCase { + + public void testRun() throws Exception { + Object lock = new Object(); + new ServiceThread(lock).start(); + new ServiceThread(lock).start(); + + Thread.sleep(1000 * 4); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char03test/WaitThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char03test/WaitThreadTest.java new file mode 100644 index 0000000..b92e6ed --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char03test/WaitThreadTest.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorialtest.char03test; + +import cn.byhieg.threadtutorial.char03.NotifyThread; +import cn.byhieg.threadtutorial.char03.WaitThread; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +public class WaitThreadTest extends TestCase { + + public void testWait()throws Exception{ + Object lock = new Object(); + new WaitThread(lock).start(); + Thread.sleep(50); + new NotifyThread(lock).start(); + + Thread.sleep(1000 * 15); + } + +} \ No newline at end of file From ad0aab05e5e9aae8568e79ee14e34b2fc23c571a Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 10 Jan 2017 17:29:54 +0800 Subject: [PATCH 015/118] 3.1.10 --- .../byhieg/threadtutorial/char03/Service.java | 2 +- .../char03/WaitHasParamThread.java | 38 +++++++++++++++++++ .../char03test/NotifyServiceThreadTest.java | 24 ++++++++++++ 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/WaitHasParamThread.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char03test/NotifyServiceThreadTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/Service.java b/src/main/java/cn/byhieg/threadtutorial/char03/Service.java index fef4e12..39799a6 100644 --- a/src/main/java/cn/byhieg/threadtutorial/char03/Service.java +++ b/src/main/java/cn/byhieg/threadtutorial/char03/Service.java @@ -24,7 +24,7 @@ public void synNotifyMethod(Object lock){ System.out.println("begin notify() ThreadName=" + Thread.currentThread().getName() + " time=" +System.currentTimeMillis()); lock.notify(); - Thread.sleep(1000 * 5); + Thread.sleep(1000 * 1); System.out.println("end notify() ThreadName=" + Thread.currentThread().getName() + " time=" + System.currentTimeMillis()); } diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/WaitHasParamThread.java b/src/main/java/cn/byhieg/threadtutorial/char03/WaitHasParamThread.java new file mode 100644 index 0000000..ef80691 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/WaitHasParamThread.java @@ -0,0 +1,38 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +public class WaitHasParamThread { + + static private Object lock = new Object(); + static private Runnable runnable1 = new Runnable() { + @Override + public void run() { + try{ + synchronized (lock){ + System.out.println("wait begin timer=" + System.currentTimeMillis()); + lock.wait(1000 * 5); + System.out.println("wait end timer=" + System.currentTimeMillis()); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + }; + + static private Runnable runnable2 = () -> { + synchronized (lock){ + System.out.println("notify begin timer=" + System.currentTimeMillis()); + lock.notify(); + System.out.println("notify end timer=" + System.currentTimeMillis()); + } + }; + + public static void main(String[] args) throws InterruptedException { + new Thread(runnable1).start(); + Thread.sleep(1000); + new Thread(runnable2).start(); + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char03test/NotifyServiceThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char03test/NotifyServiceThreadTest.java new file mode 100644 index 0000000..495726d --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char03test/NotifyServiceThreadTest.java @@ -0,0 +1,24 @@ +package cn.byhieg.threadtutorialtest.char03test; + +import cn.byhieg.threadtutorial.char03.NotifyServiceThread; +import cn.byhieg.threadtutorial.char03.Service; +import cn.byhieg.threadtutorial.char03.ServiceThread; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/1/10. + * Mail byhieg@gmail.com + */ +public class NotifyServiceThreadTest extends TestCase { + public void testRun() throws Exception { + Object lock = new Object(); + ServiceThread a = new ServiceThread(lock); + a.start(); + Thread.sleep(1000); + new NotifyServiceThread(lock).start(); + new NotifyServiceThread(lock).start(); + + Thread.sleep(1000 * 10); + } + +} \ No newline at end of file From e91a0de5b867193f14ab041adf3a32d8fe85b301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 30 Nov 2016 20:56:30 +0800 Subject: [PATCH 016/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ReadMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reflectiontutorial/ArrayObject.java | 27 + .../cn/byhieg/reflectiontutorial/ReadMe.md | 947 ++++++++++++++++++ 2 files changed, 974 insertions(+) create mode 100644 src/main/java/cn/byhieg/reflectiontutorial/ArrayObject.java create mode 100644 src/main/java/cn/byhieg/reflectiontutorial/ReadMe.md diff --git a/src/main/java/cn/byhieg/reflectiontutorial/ArrayObject.java b/src/main/java/cn/byhieg/reflectiontutorial/ArrayObject.java new file mode 100644 index 0000000..dab1baa --- /dev/null +++ b/src/main/java/cn/byhieg/reflectiontutorial/ArrayObject.java @@ -0,0 +1,27 @@ +package cn.byhieg.reflectiontutorial; + +import java.lang.reflect.Array; + +/** + * Created by byhieg on 17/1/10. + * Mail to byhieg@gmail.com + */ +public class ArrayObject { + + public static void main(String[] args) throws Exception{ + int[] intArray = (int[])Array.newInstance(int.class,3); + for (int i = 0 ;i < intArray.length;i++){ + Array.set(intArray,i,i + 2); + } + + for (int i = 0 ; i < intArray.length;i++){ + System.out.println(Array.get(intArray,i)); + } + +// Class clz = int[].class; + Class clz = Class.forName("[I"); + System.out.println(clz.getTypeName()); + System.out.println(clz.getComponentType().getTypeName()); + + } +} diff --git a/src/main/java/cn/byhieg/reflectiontutorial/ReadMe.md b/src/main/java/cn/byhieg/reflectiontutorial/ReadMe.md new file mode 100644 index 0000000..e46f8de --- /dev/null +++ b/src/main/java/cn/byhieg/reflectiontutorial/ReadMe.md @@ -0,0 +1,947 @@ + + + +# 详解Java反射各种应用 +Java除了给我们提供在编译期得到类的各种信息之外,还通过反射让我们可以在运行期间得到类的各种信息。通过反射获取类的信息,得到类的信息之后,就可以获取以下相关内容: +- Class对象 +- 构造器 +- 变量 +- 方法 +- 私有变量与私有方法 +- 注解 +- 泛型 +- 数组 + +本文也将从上面几个方面来介绍Java反射。本文涉及的所有代码均在[反射代码](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/reflectiontutorial) +首先放出一个Java类作为反射的研究对象,类的内容如下: +``` +public abstract class FatherObject implements Runnable{ + public void doSomething(){ + System.out.println("做事情......"); + } +} + +public class ExampleObject extends FatherObject{ + public int age = 30; + public String name = "byhieg"; + private Integer score = 60; + + public void printName(){ + System.out.println(name); + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getScore() { + return score; + } + + public void setScore(Integer score) { + this.score = score; + } + + + public ExampleObject(){ + + } + + public ExampleObject(String name){ + + } + + public ExampleObject(int age,Integer score){ + + } + + @Override + public void doSomething() { + super.doSomething(); + } + + @Override + public void run() { + System.out.println("run......"); + } +} + +``` + +## Class对象 +我们应用会用到反射这个知识点,肯定是想要在运行时得到类的信息,根据类的那些信息去做一些特定的操作。那么,首先无疑就是得到类的信息,在JDK中提供了Class对象来保存类的信息。所以,反射的第一步就是得到Class对象。在JDK中提供了两种方式得到Class对象。 +第一种,如果编写代码的时候,就知道Class的名字,可以直接用如下方式得到Class对象: +``` +Class exampleObjectClass = ExampleObject.class; +``` +第二种,如果在编写代码的时候,不知道类的名字,但是在运行时的时候,可以得到一个类名的字符串,可以用如下的方式获取Class对象: +``` +Class exampleObjectClass = Class.forName("cn.byhieg.reflectiontutorial.ExampleObject"); +``` +注意,此方法需要有2个条件,第一,forName中的字符串必须是全限定名,第二,这个Class类必须在classpath的路径下面,因为该方法会抛出`ClassNotFoundException`的异常。 + +获取到这个Class对象之后,就可以得到类的各种信息,开头已经提及了一些信息,下面,说几个没提到的类的信息。 + +### 得到类的名字 +类的名字有两种方式得到,一种是getName(),一种是getSimpleName()。第一种得到的是全限定名,第二种得到的是这个类的名字,不带包名。看下面的例子:Class对象,已经通过上面的代码得到了。 +``` + String fullClassName = exampleObjectClass.getName(); + String simpleClassName = exampleObjectClass.getSimpleName(); + + System.out.println(fullClassName); + System.out.println(simpleClassName); +``` +结果如下: +``` +cn.byhieg.reflectiontutorial.ExampleObject +ExampleObject +``` + +### 得到类的包名、父类和实现的接口 +类的包名和父类,可以通过如下代码得到。 +``` + //得到包信息 + Package aPackage = exampleObjectClass.getPackage(); + System.out.println(aPackage); + + //得到父类 + Class superClass = exampleObjectClass.getSuperclass(); + System.out.println(superClass.getSimpleName()); +``` +结果如下: +``` +package cn.byhieg.reflectiontutorial +FatherObject +``` +很显然,得到父类的返回值也是一个Class对象,那么可以利用这个对象得到父类的一些信息,比如判断父类是不是抽象类 +``` + System.out.println("父类是不是抽象类 " + Modifier.isAbstract(superClass.getModifiers())); +``` +getModifiers可以得到类的修饰符,从而得到类的修饰符,当然,这个getModifiers不仅仅Class对象可以调用,Method对象可以调用。 +可以使用java.lang.reflect.Modifier类中的方法来检查修饰符的类型: +``` +Modifier.isAbstract(int modifiers); +Modifier.isFinal(int modifiers); +Modifier.isInterface(int modifiers); +Modifier.isNative(int modifiers); +Modifier.isPrivate(int modifiers); +Modifier.isProtected(int modifiers); +Modifier.isPublic(int modifiers); +Modifier.isStatic(int modifiers); +Modifier.isStrict(int modifiers); +Modifier.isSynchronized(int modifiers); +Modifier.isTransient(int modifiers); +Modifier.isVolatile(int modifiers); +``` +此外,我们还可以得到父类实现的接口 +``` + //得到接口 + Class[] classes = superClass.getInterfaces(); + System.out.println("父类的接口" + classes[0]); +``` +因为Java类可以实现很多接口,所以用的数组,但在实际使用的时候,需要先判断数组的长度。 +下面,重点讲解上述列出来的内容。 + +## 构造器 +利用Java反射可以得到一个类的构造器,并根据构造器,在运行时动态的创建一个对象。首先,Java通过以下方式获取构造器的实例: +``` + //构造器 + Constructor[] constructors = exampleObjectClass.getConstructors(); + for (Constructor constructor : constructors){ + System.out.println(constructor.toString()); + } +``` +结果如下: +``` +public cn.byhieg.reflectiontutorial.ExampleObject(int,java.lang.Integer) +public cn.byhieg.reflectiontutorial.ExampleObject(java.lang.String) +public cn.byhieg.reflectiontutorial.ExampleObject() +``` +如果,事先知道要访问的构造方法的参数类型,可以利用如下方法获取指定的构造方法,例子如下: +``` + Constructor constructor = exampleObjectClass.getConstructor(String.class); + System.out.println(constructor.toString()); +``` +结果显然是: + +``` +public cn.byhieg.reflectiontutorial.ExampleObject(java.lang.String) +``` +还可以用如下方式得到另一个构造器 +``` + Constructor constructor = exampleObjectClass.getConstructor(int.class,Integer.class); + System.out.println(constructor.toString()); +``` +此外,如果我们不知道构造器的参数,只能得到所有的构造器对象,那么可以用如下方式得到每一个构造器对想的参数: +``` + Constructor[] constructors = exampleObjectClass.getConstructors(); + for (Constructor constructor : constructors){ + Class[] parameterTypes = constructor.getParameterTypes(); + System.out.println("构造器参数如下========================"); + for (Class clz : parameterTypes){ + System.out.println("参数类型 " + clz.toString()); + } + } +``` +结果如下: +``` +构造器参数如下======================== +参数类型 class java.lang.String +构造器参数如下======================== +参数类型 int +参数类型 class java.lang.Integer +``` +这里,可以看出无参构造方法,是不打印出结果的。基本类型的Class对象和引用类型的Class对象toString()方法是不一样的。 +现在,可以根据构造器的各种信息,动态创建一个对象。 +``` + Object object = constructor.newInstance(1,100); + System.out.println(object.toString()); +``` +这个创建对象的方式有2个条件,第一是通过有参构造器创建的,第二,构造器对象必须通过传入参数信息的getConstructor得到。 +第一个条件,对于无参构造方法就可以创建的对象,不需要得到构造器对象,直接Class对象调用newInstance()方法就直接创建对象。 +第二个条件,构造器对象必须通过`exampleObjectClass.getConstructor(String.class);`这种形式得到。如果通过`getConstructors`得到构造器数组,然后调用指定的构造器对象去创建对象在JDK1.8是会错的。但是JDK1.6是正常的。 + +## 变量 +利用Java反射可以在运行时得到一个类的变量信息,并且可以根据上面讲的方式,创建一个对象,设置他的变量值。首先,通过如下方法,得到所有public的变量: +``` + Field[] fields = exampleObjectClass.getFields(); + for (Field field : fields){ + System.out.println("变量为: " + field.toString()); + } +``` +结果如下: + +``` +变量为: public int cn.byhieg.reflectiontutorial.ExampleObject.age +变量为: public java.lang.String cn.byhieg.reflectiontutorial.ExampleObject.name +``` +很显然,得到的都是public的变量,上述的private的变量score,并没有得到。 +和构造器一样的得到方式一样,我们可以指定一个参数名,然后得到指定的变量: +``` + Field field = exampleObjectClass.getField("age"); + System.out.println("变量为:" + field.toString()); +``` +上述的变量的toString方法得到的名字太长,Java对Field类提供了getName的方法,返回类中写的变量名字,上面的代码就可以改成field.getName()。 +反射不仅提供了得到变量的方法,还提供了设置变量值的方式。通过如下方法可以对一个动态生成的类,改变其变量值: +``` + ExampleObject object = ((ExampleObject) constructor1.newInstance("byhieg")); + System.out.println("原先的age是 " + object.age); + field.set(object,10); + System.out.println("更改之后的age是" + object.age); +``` +结果如下: +``` +原先的age是 30 +更改之后的age是10 +``` +根据上面的代码,得到名字为age的Field对象,然后调用该对象的set方法,传入一个对象与要更改的值,就可以改变该对象的值了。注意,此方法不仅仅对成员变量有用,对静态变量也可以。当然,如果是静态变量,传入null,不用传对象,也是可以的。 + + +## 方法 +Java反射给我们除了给我们提供类的变量信息之外,当然也给我们提供了方法的信息,反射可以让我们得到方法名,方法的参数,方法的返回类型,以及调用方法等功能。 +首先,通过如下代码得到方法: +``` + //输出类的public方法 + Method[] methods = exampleObjectClass.getMethods(); + for (Method method : methods){ + System.out.println("method = "+ method.getName()); + } +``` +和获取变量一样似曾相识的代码,这里直接调用了getName,来得到类中写的方法名。写到这里,大家应该自然想到,Java同样提供了根据参数,得到具体的方法。 +``` + Method method = exampleObjectClass.getMethod("setAge",int.class); + System.out.println(method.getName()); +``` +这里与得到变量不同的是,getMethod方法还需要传入参数的类型信息,反射提供获取方法参数以及返回类型的方法,得到方法参数的例子如下: +``` + Method method = exampleObjectClass.getMethod("setAge",int.class); + System.out.println(method.getName()); + for (Class clz : method.getParameterTypes()){ + System.out.println("方法的参数" + clz.getName()); + } +``` +结果如下: +``` +setAge +方法的参数int +``` +得到方法返回类型的例子如下: +``` +System.out.println(method.getReturnType().getName()); +``` +结果如下: +``` +void +``` +此外,Java反射支持通过invoke调用得到的方法。例子如下: +``` +method.invoke(exampleObjectClass.newInstance(),1); +``` +invoke第一个参数是这个对象,第二个参数是变长数组,传入该方法的参数。和Field对象同样,对于静态方法同样,可以传入null,调用静态方法。 +## 私有变量与私有方法 +上面的方法只能得到public方法和变量,无法得到非public修饰的方法和变量,Java提供了额外的方法来得到非public变量与方法。即通过`getDeclaredFields`与`getDeclaredMethods`方法得到私有的变量与方法,同样也支持用`getDeclaredField(变量名)`与` getDeclaredMethod(方法名)`的形式得到指定的变量名与方法名。但是这样得到的Field对象与Method对象无法直接运用,必须让这些对象调用setAccessible(true),才能正常运用。之后的方式就可上面讲的一样了。 + +## 注解 +先写一个包含注解的类: +``` +MyAnnotation(name="byhieg",value = "hello world") +public class AnnotationObject { + + @MyAnnotation(name="field",value = "变量") + public String field; + + @MyAnnotation(name="method",value = "方法") + public void doSomeThing(){ + System.out.println("做一些事情"); + } + + public void doOtherThing(@MyAnnotation(name="param",value = "参数") String param){ + + } +} + +@Retention(RetentionPolicy.RUNTIME) +public @interface MyAnnotation { + public String name(); + public String value(); + +} +``` +Java给我们提供了在运行时获取类的注解信息,可以得到类注解,方法注解,参数注解,变量注解。 +与上面获取方式一样,Java提供了2种获取方式,一种是获取全部的注解,返回一个数组,第二种是指定得到指定的注解。 +我们以一个类注解为例,讲解以下这两种获取方式。 +``` + Class clz = AnnotationObject.class; + Annotation[] annotations = clz.getAnnotations(); + Annotation annotation = clz.getAnnotation(AnnotationObject.class); +``` +然后,就可以根据得到的注解进行后续的处理,下面是一个处理的例子: +``` + for (Annotation annotation : annotations){ + if (annotation instanceof MyAnnotation){ + MyAnnotation myAnnotation = (MyAnnotation)annotation; + System.out.println("name: " + myAnnotation.name()); + System.out.println("value:" + myAnnotation.value()); + } + } +``` +上面的类注解使用Class对象调用`getAnnotations`得到的,方法注解和变量注解是一样的,分别用method对象与field对象调用`getDeclaredAnnotations`得到注解,没什么多说的。例子看[反射代码](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/reflectiontutorial) +参数注解是比较麻烦的一项,获取方式比较得到,第一步,先取得method对象,调用`getParameterAnnotations`,但是这个返回值是一个二维数组,因为method对象有很多参数,每个参数有可能有很多注解。例子如下: +``` + Method method1 = clz.getMethod("doOtherThing",String.class); + Annotation[][] annotationInParam = method1.getParameterAnnotations(); + Class[] params = method1.getParameterTypes(); + int i = 0; + for (Annotation[] annotations: annotationInParam){ + Class para = params[i++]; + for (Annotation annotation : annotations){ + if(annotation instanceof MyAnnotation){ + MyAnnotation myAnnotation = (MyAnnotation) annotation; + System.out.println("param: " + para.getName()); + System.out.println("name : " + myAnnotation.name()); + System.out.println("value :" + myAnnotation.value()); + } + + } + } +``` +## 泛型 +因为Java泛型是通过擦除来实现的,很难直接得到泛型具体的参数化类型的信息,但是我们可以通过一种间接的形式利用反射得到泛型信息。比如下面这个类: +``` +public class GenericObject { + public List lists; + + public List getLists() { + return lists; + } + + public void setLists(List lists) { + this.lists = lists; + } +} +``` +如果一个方法返回一个泛型类,我们可以通过method对象去调用`getGenericReturnType`来得到这个泛型类具体的参数化类型是什么。看下面的代码: +``` + Class clz = GenericObject.class; + Method method = clz.getMethod("getLists"); + Type genericType = method.getGenericReturnType(); + if(genericType instanceof ParameterizedType){ + ParameterizedType parameterizedType = ((ParameterizedType) genericType); + Type[] types = parameterizedType.getActualTypeArguments(); + for (Type type : types){ + Class actualClz = ((Class) type); + System.out.println("参数化类型为 : " + actualClz); + } + } +``` +结果如下: +``` +参数化类型为 : class java.lang.String +``` +步骤有点繁琐,下面一步步解释: +1. 反射得到返回类型为泛型类的方法 +2. 调用`getGenericReturnType`得到方法返回类型中的参数化类型 +3. 判断该type对象能不能向下转型为`ParameterizedType` +4. 转型成功,调用`getActualTypeArguments`得到参数化类型的数组,因为有的泛型类,不只只有一个参数化类型如Map +5. 取出数组中的每一个的值,转型为Class对象输出。 + +看结果确实得到了泛型的具体的信息。 +如果没有一个方法返回泛型类型,那么我们也可以通过方法的参数为泛型类,来得到泛型的参数化类型,如上面类中的setLists方法。例子如下: +``` + Method setMethod = clz.getMethod("setLists", List.class); + Type[] genericParameterTypes = setMethod.getGenericParameterTypes(); + for (Type genericParameterType: genericParameterTypes){ + System.out.println("GenericParameterTypes为 : " + genericParameterType.getTypeName()); + if(genericParameterType instanceof ParameterizedType){ + ParameterizedType parameterizedType = ((ParameterizedType) genericParameterType); + System.out.println("ParameterizedType为 :" + parameterizedType.getTypeName()); + Type types[] = parameterizedType.getActualTypeArguments(); + for (Type type : types){ + System.out.println("参数化类型为 : " + ((Class) type).getName()); + } + } + + } +``` +执行的结果如下: +``` +GenericParameterTypes为 : java.util.List +ParameterizedType为 :java.util.List +参数化类型为 : java.lang.String +``` +因为方法的参数为泛型类型的可能不止一个,所以通过`getGenericParameterTypes`得到是一个数组,我们需要确定每一个元素,是否是具有参数化类型。后续的步骤与上面类似,就不多说了。 +如果连方法参数都不带泛型类,那么只剩下最后一种情况,通过变量类型,即用Field类。例子如下: +``` + Field field = clz.getField("lists"); + Type type = field.getGenericType(); + if (type instanceof ParameterizedType){ + ParameterizedType parameterizedType = ((ParameterizedType) type); + Type [] types = parameterizedType.getActualTypeArguments(); + for (Type type1 : types) { + System.out.println("参数化类型 : " + ((Class) type1).getTypeName()); + } + } +``` +原理和上面的一样,只不过Type对象是通过`field.getGenericType()`,剩下的操作类似就不多说了。 +关于通过反射获取泛型的参数化类型的信息的介绍就到此为止。 + +## 数组 +Java反射可以对数组进行操作,包括创建一个数组,访问数组中的值,以及得到一个数组的Class对象。 +下面,先说简单的,创建数组以及访问数组中的值:在反射中使用Array这个类,是reflect包下面的。 +``` + //创建一个int类型的数组,长度为3 + int[] intArray = (int[])Array.newInstance(int.class,3); + //通过反射的形式,给数组赋值 + for (int i = 0 ;i < intArray.length;i++){ + Array.set(intArray,i,i + 2); + } +//通过反射的形式,得到数组中的值 + for (int i = 0 ; i < intArray.length;i++){ + System.out.println(Array.get(intArray,i)); + } +``` +上述就是创建数组,访问数组中的值利用反射方式。 +对于得到一个数组的Class对象,简单的可以用`int[].class`,或者利用Class.forName的形式得到,写法比较奇怪: +``` + Class clz = Class.forName("[I"); + System.out.println(clz.getTypeName()); +``` +结果为: +``` +int[] +``` +这个forName中的字符串,`[`表示是数组,`I`表示是int,float就是`F`,double就是`D`等等,如果要得到一个普通对象的数组,则用下面的形式: +``` + Class stringClz = Class.forName("[Ljava.lang.String;"); +``` +`[`表示是数组,`L`的右边是类名,类型的右边是一个`;`; +这种方式获取数组的Class对象实在是太繁琐了。 +在得到数组的Class对象之后,就可以调用他的一些独特的方法,比如调用`getComponentType`来得到数组成员的类型信息,如int数组就是成员类型就是int。 +``` +System.out.println(clz.getComponentType().getTypeName()); +``` +结果为`int` + +## 总结 +这次,关于反射的各种应用就到此为止,后续可能会有深入的知识讲解。具体的代码可以去看[反射代码](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/reflectiontutorial) +在src包里面是各种类,在test类里是对这些类的访问。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +详解Java反射各种应用 + +Java除了给我们提供在编译期得到类的各种信息之外,还通过反射让我们可以在运行期间得到类的各种信息。通过反射获取类的信息,得到类的信息之后,就可以获取以下相关内容: + +Class对象 +构造器 +变量 +方法 +私有变量与私有方法 +注解 +泛型 +数组 +本文也将从上面几个方面来介绍Java反射。本文涉及的所有代码均在反射代码 +首先放出一个Java类作为反射的研究对象,类的内容如下: + +public abstract class FatherObject implements Runnable{ + public void doSomething(){ + System.out.println("做事情......"); + } +} + +public class ExampleObject extends FatherObject{ + public int age = 30; + public String name = "byhieg"; + private Integer score = 60; + + public void printName(){ + System.out.println(name); + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getScore() { + return score; + } + + public void setScore(Integer score) { + this.score = score; + } + + + public ExampleObject(){ + + } + + public ExampleObject(String name){ + + } + + public ExampleObject(int age,Integer score){ + + } + + @Override + public void doSomething() { + super.doSomething(); + } + + @Override + public void run() { + System.out.println("run......"); + } +} + +Class对象 + +我们应用会用到反射这个知识点,肯定是想要在运行时得到类的信息,根据类的那些信息去做一些特定的操作。那么,首先无疑就是得到类的信息,在JDK中提供了Class对象来保存类的信息。所以,反射的第一步就是得到Class对象。在JDK中提供了两种方式得到Class对象。 +第一种,如果编写代码的时候,就知道Class的名字,可以直接用如下方式得到Class对象: + +Class exampleObjectClass = ExampleObject.class; +第二种,如果在编写代码的时候,不知道类的名字,但是在运行时的时候,可以得到一个类名的字符串,可以用如下的方式获取Class对象: + +Class exampleObjectClass = Class.forName("cn.byhieg.reflectiontutorial.ExampleObject"); +注意,此方法需要有2个条件,第一,forName中的字符串必须是全限定名,第二,这个Class类必须在classpath的路径下面,因为该方法会抛出ClassNotFoundException的异常。 + +获取到这个Class对象之后,就可以得到类的各种信息,开头已经提及了一些信息,下面,说几个没提到的类的信息。 + +得到类的名字 + +类的名字有两种方式得到,一种是getName(),一种是getSimpleName()。第一种得到的是全限定名,第二种得到的是这个类的名字,不带包名。看下面的例子:Class对象,已经通过上面的代码得到了。 + + String fullClassName = exampleObjectClass.getName(); + String simpleClassName = exampleObjectClass.getSimpleName(); + + System.out.println(fullClassName); + System.out.println(simpleClassName); +结果如下: + +cn.byhieg.reflectiontutorial.ExampleObject +ExampleObject +得到类的包名、父类和实现的接口 + +类的包名和父类,可以通过如下代码得到。 + + //得到包信息 + Package aPackage = exampleObjectClass.getPackage(); + System.out.println(aPackage); + + //得到父类 + Class superClass = exampleObjectClass.getSuperclass(); + System.out.println(superClass.getSimpleName()); +结果如下: + +package cn.byhieg.reflectiontutorial +FatherObject +很显然,得到父类的返回值也是一个Class对象,那么可以利用这个对象得到父类的一些信息,比如判断父类是不是抽象类 + + System.out.println("父类是不是抽象类 " + Modifier.isAbstract(superClass.getModifiers())); +getModifiers可以得到类的修饰符,从而得到类的修饰符,当然,这个getModifiers不仅仅Class对象可以调用,Method对象可以调用。 +可以使用java.lang.reflect.Modifier类中的方法来检查修饰符的类型: + +Modifier.isAbstract(int modifiers); +Modifier.isFinal(int modifiers); +Modifier.isInterface(int modifiers); +Modifier.isNative(int modifiers); +Modifier.isPrivate(int modifiers); +Modifier.isProtected(int modifiers); +Modifier.isPublic(int modifiers); +Modifier.isStatic(int modifiers); +Modifier.isStrict(int modifiers); +Modifier.isSynchronized(int modifiers); +Modifier.isTransient(int modifiers); +Modifier.isVolatile(int modifiers); +此外,我们还可以得到父类实现的接口 + + //得到接口 + Class[] classes = superClass.getInterfaces(); + System.out.println("父类的接口" + classes[0]); +因为Java类可以实现很多接口,所以用的数组,但在实际使用的时候,需要先判断数组的长度。 +下面,重点讲解上述列出来的内容。 + +构造器 + +利用Java反射可以得到一个类的构造器,并根据构造器,在运行时动态的创建一个对象。首先,Java通过以下方式获取构造器的实例: + + //构造器 + Constructor[] constructors = exampleObjectClass.getConstructors(); + for (Constructor constructor : constructors){ + System.out.println(constructor.toString()); + } +结果如下: + +public cn.byhieg.reflectiontutorial.ExampleObject(int,java.lang.Integer) +public cn.byhieg.reflectiontutorial.ExampleObject(java.lang.String) +public cn.byhieg.reflectiontutorial.ExampleObject() +如果,事先知道要访问的构造方法的参数类型,可以利用如下方法获取指定的构造方法,例子如下: + + Constructor constructor = exampleObjectClass.getConstructor(String.class); + System.out.println(constructor.toString()); +结果显然是: + +public cn.byhieg.reflectiontutorial.ExampleObject(java.lang.String) +还可以用如下方式得到另一个构造器 + + Constructor constructor = exampleObjectClass.getConstructor(int.class,Integer.class); + System.out.println(constructor.toString()); +此外,如果我们不知道构造器的参数,只能得到所有的构造器对象,那么可以用如下方式得到每一个构造器对想的参数: + + Constructor[] constructors = exampleObjectClass.getConstructors(); + for (Constructor constructor : constructors){ + Class[] parameterTypes = constructor.getParameterTypes(); + System.out.println("构造器参数如下========================"); + for (Class clz : parameterTypes){ + System.out.println("参数类型 " + clz.toString()); + } + } +结果如下: + +构造器参数如下======================== +参数类型 class java.lang.String +构造器参数如下======================== +参数类型 int +参数类型 class java.lang.Integer +这里,可以看出无参构造方法,是不打印出结果的。基本类型的Class对象和引用类型的Class对象toString()方法是不一样的。 +现在,可以根据构造器的各种信息,动态创建一个对象。 + + Object object = constructor.newInstance(1,100); + System.out.println(object.toString()); +这个创建对象的方式有2个条件,第一是通过有参构造器创建的,第二,构造器对象必须通过传入参数信息的getConstructor得到。 +第一个条件,对于无参构造方法就可以创建的对象,不需要得到构造器对象,直接Class对象调用newInstance()方法就直接创建对象。 +第二个条件,构造器对象必须通过exampleObjectClass.getConstructor(String.class);这种形式得到。如果通过getConstructors得到构造器数组,然后调用指定的构造器对象去创建对象在JDK1.8是会错的。但是JDK1.6是正常的。 + +变量 + +利用Java反射可以在运行时得到一个类的变量信息,并且可以根据上面讲的方式,创建一个对象,设置他的变量值。首先,通过如下方法,得到所有public的变量: + + Field[] fields = exampleObjectClass.getFields(); + for (Field field : fields){ + System.out.println("变量为: " + field.toString()); + } +结果如下: + +变量为: public int cn.byhieg.reflectiontutorial.ExampleObject.age +变量为: public java.lang.String cn.byhieg.reflectiontutorial.ExampleObject.name +很显然,得到的都是public的变量,上述的private的变量score,并没有得到。 +和构造器一样的得到方式一样,我们可以指定一个参数名,然后得到指定的变量: + + Field field = exampleObjectClass.getField("age"); + System.out.println("变量为:" + field.toString()); +上述的变量的toString方法得到的名字太长,Java对Field类提供了getName的方法,返回类中写的变量名字,上面的代码就可以改成field.getName()。 +反射不仅提供了得到变量的方法,还提供了设置变量值的方式。通过如下方法可以对一个动态生成的类,改变其变量值: + + ExampleObject object = ((ExampleObject) constructor1.newInstance("byhieg")); + System.out.println("原先的age是 " + object.age); + field.set(object,10); + System.out.println("更改之后的age是" + object.age); +结果如下: + +原先的age是 30 +更改之后的age是10 +根据上面的代码,得到名字为age的Field对象,然后调用该对象的set方法,传入一个对象与要更改的值,就可以改变该对象的值了。注意,此方法不仅仅对成员变量有用,对静态变量也可以。当然,如果是静态变量,传入null,不用传对象,也是可以的。 + +方法 + +Java反射给我们除了给我们提供类的变量信息之外,当然也给我们提供了方法的信息,反射可以让我们得到方法名,方法的参数,方法的返回类型,以及调用方法等功能。 +首先,通过如下代码得到方法: + + //输出类的public方法 + Method[] methods = exampleObjectClass.getMethods(); + for (Method method : methods){ + System.out.println("method = "+ method.getName()); + } +和获取变量一样似曾相识的代码,这里直接调用了getName,来得到类中写的方法名。写到这里,大家应该自然想到,Java同样提供了根据参数,得到具体的方法。 + + Method method = exampleObjectClass.getMethod("setAge",int.class); + System.out.println(method.getName()); +这里与得到变量不同的是,getMethod方法还需要传入参数的类型信息,反射提供获取方法参数以及返回类型的方法,得到方法参数的例子如下: + + Method method = exampleObjectClass.getMethod("setAge",int.class); + System.out.println(method.getName()); + for (Class clz : method.getParameterTypes()){ + System.out.println("方法的参数" + clz.getName()); + } +结果如下: + +setAge +方法的参数int +得到方法返回类型的例子如下: + +System.out.println(method.getReturnType().getName()); +结果如下: + +void +此外,Java反射支持通过invoke调用得到的方法。例子如下: + +method.invoke(exampleObjectClass.newInstance(),1); +invoke第一个参数是这个对象,第二个参数是变长数组,传入该方法的参数。和Field对象同样,对于静态方法同样,可以传入null,调用静态方法。 + +私有变量与私有方法 + +上面的方法只能得到public方法和变量,无法得到非public修饰的方法和变量,Java提供了额外的方法来得到非public变量与方法。即通过getDeclaredFields与getDeclaredMethods方法得到私有的变量与方法,同样也支持用getDeclaredField(变量名)与getDeclaredMethod(方法名)的形式得到指定的变量名与方法名。但是这样得到的Field对象与Method对象无法直接运用,必须让这些对象调用setAccessible(true),才能正常运用。之后的方式就可上面讲的一样了。 + +注解 + +先写一个包含注解的类: + +MyAnnotation(name="byhieg",value = "hello world") +public class AnnotationObject { + + @MyAnnotation(name="field",value = "变量") + public String field; + + @MyAnnotation(name="method",value = "方法") + public void doSomeThing(){ + System.out.println("做一些事情"); + } + + public void doOtherThing(@MyAnnotation(name="param",value = "参数") String param){ + + } +} + +@Retention(RetentionPolicy.RUNTIME) +public @interface MyAnnotation { + public String name(); + public String value(); + +} +Java给我们提供了在运行时获取类的注解信息,可以得到类注解,方法注解,参数注解,变量注解。 +与上面获取方式一样,Java提供了2种获取方式,一种是获取全部的注解,返回一个数组,第二种是指定得到指定的注解。 +我们以一个类注解为例,讲解以下这两种获取方式。 + + Class clz = AnnotationObject.class; + Annotation[] annotations = clz.getAnnotations(); + Annotation annotation = clz.getAnnotation(AnnotationObject.class); +然后,就可以根据得到的注解进行后续的处理,下面是一个处理的例子: + + for (Annotation annotation : annotations){ + if (annotation instanceof MyAnnotation){ + MyAnnotation myAnnotation = (MyAnnotation)annotation; + System.out.println("name: " + myAnnotation.name()); + System.out.println("value:" + myAnnotation.value()); + } + } +上面的类注解使用Class对象调用getAnnotations得到的,方法注解和变量注解是一样的,分别用method对象与field对象调用getDeclaredAnnotations得到注解,没什么多说的。例子看反射代码 +参数注解是比较麻烦的一项,获取方式比较得到,第一步,先取得method对象,调用getParameterAnnotations,但是这个返回值是一个二维数组,因为method对象有很多参数,每个参数有可能有很多注解。例子如下: + + Method method1 = clz.getMethod("doOtherThing",String.class); + Annotation[][] annotationInParam = method1.getParameterAnnotations(); + Class[] params = method1.getParameterTypes(); + int i = 0; + for (Annotation[] annotations: annotationInParam){ + Class para = params[i++]; + for (Annotation annotation : annotations){ + if(annotation instanceof MyAnnotation){ + MyAnnotation myAnnotation = (MyAnnotation) annotation; + System.out.println("param: " + para.getName()); + System.out.println("name : " + myAnnotation.name()); + System.out.println("value :" + myAnnotation.value()); + } + + } + } +泛型 + +因为Java泛型是通过擦除来实现的,很难直接得到泛型具体的参数化类型的信息,但是我们可以通过一种间接的形式利用反射得到泛型信息。比如下面这个类: + +public class GenericObject { + public List lists; + + public List getLists() { + return lists; + } + + public void setLists(List lists) { + this.lists = lists; + } +} +如果一个方法返回一个泛型类,我们可以通过method对象去调用getGenericReturnType来得到这个泛型类具体的参数化类型是什么。看下面的代码: + + Class clz = GenericObject.class; + Method method = clz.getMethod("getLists"); + Type genericType = method.getGenericReturnType(); + if(genericType instanceof ParameterizedType){ + ParameterizedType parameterizedType = ((ParameterizedType) genericType); + Type[] types = parameterizedType.getActualTypeArguments(); + for (Type type : types){ + Class actualClz = ((Class) type); + System.out.println("参数化类型为 : " + actualClz); + } + } +结果如下: + +参数化类型为 : class java.lang.String +步骤有点繁琐,下面一步步解释: + +反射得到返回类型为泛型类的方法 +调用getGenericReturnType得到方法返回类型中的参数化类型 +判断该type对象能不能向下转型为ParameterizedType +转型成功,调用getActualTypeArguments得到参数化类型的数组,因为有的泛型类,不只只有一个参数化类型如Map +取出数组中的每一个的值,转型为Class对象输出。 +看结果确实得到了泛型的具体的信息。 +如果没有一个方法返回泛型类型,那么我们也可以通过方法的参数为泛型类,来得到泛型的参数化类型,如上面类中的setLists方法。例子如下: + + Method setMethod = clz.getMethod("setLists", List.class); + Type[] genericParameterTypes = setMethod.getGenericParameterTypes(); + for (Type genericParameterType: genericParameterTypes){ + System.out.println("GenericParameterTypes为 : " + genericParameterType.getTypeName()); + if(genericParameterType instanceof ParameterizedType){ + ParameterizedType parameterizedType = ((ParameterizedType) genericParameterType); + System.out.println("ParameterizedType为 :" + parameterizedType.getTypeName()); + Type types[] = parameterizedType.getActualTypeArguments(); + for (Type type : types){ + System.out.println("参数化类型为 : " + ((Class) type).getName()); + } + } + + } +执行的结果如下: + +GenericParameterTypes为 : java.util.List +ParameterizedType为 :java.util.List +参数化类型为 : java.lang.String +因为方法的参数为泛型类型的可能不止一个,所以通过getGenericParameterTypes得到是一个数组,我们需要确定每一个元素,是否是具有参数化类型。后续的步骤与上面类似,就不多说了。 +如果连方法参数都不带泛型类,那么只剩下最后一种情况,通过变量类型,即用Field类。例子如下: + + Field field = clz.getField("lists"); + Type type = field.getGenericType(); + if (type instanceof ParameterizedType){ + ParameterizedType parameterizedType = ((ParameterizedType) type); + Type [] types = parameterizedType.getActualTypeArguments(); + for (Type type1 : types) { + System.out.println("参数化类型 : " + ((Class) type1).getTypeName()); + } + } +原理和上面的一样,只不过Type对象是通过field.getGenericType(),剩下的操作类似就不多说了。 +关于通过反射获取泛型的参数化类型的信息的介绍就到此为止。 + +数组 + +Java反射可以对数组进行操作,包括创建一个数组,访问数组中的值,以及得到一个数组的Class对象。 +下面,先说简单的,创建数组以及访问数组中的值:在反射中使用Array这个类,是reflect包下面的。 + + //创建一个int类型的数组,长度为3 + int[] intArray = (int[])Array.newInstance(int.class,3); + //通过反射的形式,给数组赋值 + for (int i = 0 ;i < intArray.length;i++){ + Array.set(intArray,i,i + 2); + } +//通过反射的形式,得到数组中的值 + for (int i = 0 ; i < intArray.length;i++){ + System.out.println(Array.get(intArray,i)); + } +上述就是创建数组,访问数组中的值利用反射方式。 +对于得到一个数组的Class对象,简单的可以用int[].class,或者利用Class.forName的形式得到,写法比较奇怪: + + Class clz = Class.forName("[I"); + System.out.println(clz.getTypeName()); +结果为: + +int[] +这个forName中的字符串,[表示是数组,I表示是int,float就是F,double就是D等等,如果要得到一个普通对象的数组,则用下面的形式: + + Class stringClz = Class.forName("[Ljava.lang.String;"); +[表示是数组,L的右边是类名,类型的右边是一个;; +这种方式获取数组的Class对象实在是太繁琐了。 +在得到数组的Class对象之后,就可以调用他的一些独特的方法,比如调用getComponentType来得到数组成员的类型信息,如int数组就是成员类型就是int。 + +System.out.println(clz.getComponentType().getTypeName()); +结果为int + +总结 + +这次,关于反射的各种应用就到此为止,后续可能会有深入的知识讲解。具体的代码可以去看反射代码 +在src包里面是各种类,在test类里是对这些类的访问。 From 7250a24bca504333a3513370f1d70ded4ac01551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 29 Nov 2016 21:20:27 +0800 Subject: [PATCH 017/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9ReadMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index d2563b0..01defd6 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,20 @@ ## ThreadTutorial内容说明 在源码路径下`cn.byhieg.threadtutorial`中放置的是Java多线程的代码和测试例子,在每一个章的包下,都有一个ReadMe来说明该章的知识点。 在char01包里放置Java多线程基本知识的代码。内容如下: + 1. 如何使用多线程 2. 如何得到多线程的一些信息 3. 如何停止线程 4. 如何暂停线程 5. 线程的一些其他用法 + +在char02包里放置了Java对变量和对象并发访问的知识的代码。内容如下: + +1. 对于方法的同步处理 +2. 对于语句块的同步处理 +3. 对类加锁的同步处理 +4. 保证可见性的关键字——volatile + + + + From 867fb4539ceb2c8245910ac97e4689578f6d6b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Mon, 28 Nov 2016 21:28:20 +0800 Subject: [PATCH 018/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9ReadMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index 01defd6..d1abc8c 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,26 @@ 3. 对类加锁的同步处理 4. 保证可见性的关键字——volatile +## ReflectionTutorial内容说明 +在源码路径下`cn.byhieg.reflectiontutorial`中放置的是Java反射的代码和测试例子,在每一个章的包下,都有一个ReadMe来说明该章的知识点。 +在包下面,不细分包,整个教程的讲解内容如下: +Java通过反射获取如下内容: + +- Class对象 +- 构造器 +- 变量 +- 方法 +- 私有变量与私有方法 +- 注解 +- 泛型 +- 数组 + + + + + + + From 96421fdfa595416faab934189dddd01f7c04d7f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sun, 27 Nov 2016 21:38:07 +0800 Subject: [PATCH 019/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9ReadMe=E5=9B=BE?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JavaTutorial\347\233\256\345\275\225.jpg" | Bin 21576 -> 68348 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/images/JavaTutorial\347\233\256\345\275\225.jpg" "b/images/JavaTutorial\347\233\256\345\275\225.jpg" index 65e5566c7edc7262327db23723ee252886c921ba..64fe3ef3a594fdc85bc93a3e5b8045fa18918d2d 100644 GIT binary patch literal 68348 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 O`F|HK`Ma@T?>_+x7+^gB literal 21576 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 Zk8A8d-Y5Kj_}>aa|2aVZ|LGnN{U1wskSqWI From 25956e9c9a51f4350b12f66d7be4787275973778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Thu, 12 Jan 2017 00:15:25 +0800 Subject: [PATCH 020/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial?= =?UTF-8?q?=E5=88=B03.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/byhieg/threadtutorial/char03/Add.java | 21 ++++++++++ .../threadtutorial/char03/AddThread.java | 18 +++++++++ .../threadtutorial/char03/JoinThread.java | 19 ++++++++++ .../threadtutorial/char03/JoinThreadA.java | 30 +++++++++++++++ .../threadtutorial/char03/JoinThreadB.java | 26 +++++++++++++ .../threadtutorial/char03/JoinThreadC.java | 17 +++++++++ .../byhieg/threadtutorial/char03/MyList.java | 2 +- .../threadtutorial/char03/Subtract.java | 28 ++++++++++++++ .../threadtutorial/char03/SubtractThread.java | 19 ++++++++++ .../threadtutorial/char03/SynService.java | 25 ++++++++++++ .../char03test/AddSubTest.java | 38 +++++++++++++++++++ .../char03test/JoinABCThreadTest.java | 26 +++++++++++++ .../char03test/JoinThreadTest.java | 19 ++++++++++ .../char03test/SynServiceTest.java | 22 +++++++++++ 14 files changed, 309 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/Add.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/AddThread.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/JoinThread.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadA.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadB.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadC.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/Subtract.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/SubtractThread.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/SynService.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char03test/AddSubTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char03test/JoinABCThreadTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char03test/JoinThreadTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char03test/SynServiceTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/Add.java b/src/main/java/cn/byhieg/threadtutorial/char03/Add.java new file mode 100644 index 0000000..a7ac35d --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/Add.java @@ -0,0 +1,21 @@ +package cn.byhieg.threadtutorial.char03; + +import javax.activation.MailcapCommandMap; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class Add { + private Object lock; + public Add(Object lock){ + this.lock = lock; + } + + public void add(){ + synchronized (lock){ + MyList.list.add("anyString"); + lock.notifyAll(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/AddThread.java b/src/main/java/cn/byhieg/threadtutorial/char03/AddThread.java new file mode 100644 index 0000000..894c8ce --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/AddThread.java @@ -0,0 +1,18 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class AddThread extends Thread{ + private Add p; + public AddThread(Add p){ + this.p = p; + } + + @Override + public void run() { + super.run(); + p.add(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/JoinThread.java b/src/main/java/cn/byhieg/threadtutorial/char03/JoinThread.java new file mode 100644 index 0000000..b23611f --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/JoinThread.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class JoinThread extends Thread{ + @Override + public void run() { + super.run(); + try{ + int secondValue = (int)(Math.random() * 10000); + System.out.println(secondValue); + Thread.sleep(secondValue); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadA.java b/src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadA.java new file mode 100644 index 0000000..664c4cb --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadA.java @@ -0,0 +1,30 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class JoinThreadA extends Thread { + private JoinThreadB b; + public JoinThreadA(JoinThreadB b){ + this.b = b; + } + + @Override + public void run() { + super.run(); + try{ + synchronized (b){ + b.start(); + b.join(); + for (int i = 0 ; i < Integer.MAX_VALUE;i++){ + String newString = new String(); + Math.random(); + } + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadB.java b/src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadB.java new file mode 100644 index 0000000..e9dcc94 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadB.java @@ -0,0 +1,26 @@ +package cn.byhieg.threadtutorial.char03; + +import com.sun.org.apache.xml.internal.res.XMLErrorResources_tr; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class JoinThreadB extends Thread{ + + @Override + public void run() { + super.run(); + try{ + System.out.println(" b run begin timer=" + System.currentTimeMillis()); + Thread.sleep(1000 * 2); + System.out.println(" b run end timer=" + System.currentTimeMillis()); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + synchronized public void bService(){ + System.out.println(" 打印了bService timer= " + System.currentTimeMillis()); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadC.java b/src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadC.java new file mode 100644 index 0000000..ae85e5d --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/JoinThreadC.java @@ -0,0 +1,17 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class JoinThreadC extends Thread{ + private JoinThreadB joinThreadB; + public JoinThreadC(JoinThreadB joinThreadB){ + this.joinThreadB = joinThreadB; + } + + @Override + public void run() { + joinThreadB.bService(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/MyList.java b/src/main/java/cn/byhieg/threadtutorial/char03/MyList.java index 2cae6bd..d3d1c6e 100644 --- a/src/main/java/cn/byhieg/threadtutorial/char03/MyList.java +++ b/src/main/java/cn/byhieg/threadtutorial/char03/MyList.java @@ -8,7 +8,7 @@ * Mail byhieg@gmail.com */ public class MyList { - private static List list = new ArrayList(); + public static List list = new ArrayList(); public static void add(){ list.add("anyString"); diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/Subtract.java b/src/main/java/cn/byhieg/threadtutorial/char03/Subtract.java new file mode 100644 index 0000000..02cdf17 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/Subtract.java @@ -0,0 +1,28 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class Subtract { + private Object lock; + public Subtract(Object lock){ + this.lock = lock; + } + + public void subtract(){ + try{ + synchronized (lock){ + while (MyList.list.size() == 0){ + System.out.println("wait begin ThreadName=" + Thread.currentThread().getName()); + lock.wait(); + System.out.println("wait end ThreadName=" + Thread.currentThread().getName()); + } + MyList.list.remove(0); + System.out.println("list size=" + MyList.list.size()); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/SubtractThread.java b/src/main/java/cn/byhieg/threadtutorial/char03/SubtractThread.java new file mode 100644 index 0000000..8c8c9e7 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/SubtractThread.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class SubtractThread extends Thread{ + private Subtract r; + + public SubtractThread(Subtract r){ + this.r = r; + } + + @Override + public void run() { + super.run(); + r.subtract(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/SynService.java b/src/main/java/cn/byhieg/threadtutorial/char03/SynService.java new file mode 100644 index 0000000..a879a42 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/SynService.java @@ -0,0 +1,25 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class SynService { + + public Object o; + public SynService(Object o){ + this.o = o; + } + public void doSomething(){ + synchronized (o){ + System.out.println("开始 " + System.currentTimeMillis()); + System.out.println(Thread.currentThread().getName() + " 执行中"); + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("结束" + System.currentTimeMillis()); + } + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char03test/AddSubTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char03test/AddSubTest.java new file mode 100644 index 0000000..c7531e5 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char03test/AddSubTest.java @@ -0,0 +1,38 @@ +package cn.byhieg.threadtutorialtest.char03test; + +import cn.byhieg.threadtutorial.char03.Add; +import cn.byhieg.threadtutorial.char03.AddThread; +import cn.byhieg.threadtutorial.char03.Subtract; +import cn.byhieg.threadtutorial.char03.SubtractThread; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class AddSubTest extends TestCase { + + public void testRun() throws Exception{ + Object lock = new Object(); + Add add = new Add(lock); + Subtract subtract1 = new Subtract(lock); + Subtract subtract2 = new Subtract(lock); + + AddThread addThread = new AddThread(add); + SubtractThread subtract1Thread = new SubtractThread(subtract1); + SubtractThread subtract2Thread = new SubtractThread(subtract2); + + subtract1Thread.setName("sub1Thread"); + subtract1Thread.start(); + + subtract2Thread.setName("sub2Thread"); + subtract2Thread.start(); + + Thread.sleep(1000 * 1); + addThread.setName("addThread"); + addThread.start(); + + Thread.sleep(5000); + + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char03test/JoinABCThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char03test/JoinABCThreadTest.java new file mode 100644 index 0000000..95583eb --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char03test/JoinABCThreadTest.java @@ -0,0 +1,26 @@ +package cn.byhieg.threadtutorialtest.char03test; + +import cn.byhieg.threadtutorial.char03.JoinThreadA; +import cn.byhieg.threadtutorial.char03.JoinThreadB; +import cn.byhieg.threadtutorial.char03.JoinThreadC; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class JoinABCThreadTest extends TestCase { + + public void testRun() throws Exception{ + JoinThreadB b = new JoinThreadB(); + + JoinThreadA a = new JoinThreadA(b); + a.start(); + + Thread.sleep(1000); + JoinThreadC c = new JoinThreadC(b); + c.start(); + + Thread.sleep(1000 * 10); + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char03test/JoinThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char03test/JoinThreadTest.java new file mode 100644 index 0000000..71116de --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char03test/JoinThreadTest.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorialtest.char03test; + +import cn.byhieg.threadtutorial.char03.JoinThread; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class JoinThreadTest extends TestCase { + public void testRun() throws Exception { + JoinThread joinThread = new JoinThread(); + joinThread.start(); + joinThread.join(); + System.out.println("我想当Join对象执行完毕后我再执行,我做到了"); + + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char03test/SynServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char03test/SynServiceTest.java new file mode 100644 index 0000000..c2af414 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char03test/SynServiceTest.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorialtest.char03test; + +import cn.byhieg.threadtutorial.char03.SynService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/11. + * Mail to byhieg@gmail.com + */ +public class SynServiceTest extends TestCase { + + public void testDoSomething() throws Exception { + Object object = new Object(); + + new Thread(() -> new SynService(object).doSomething()).start(); + Thread.sleep(1000); + new Thread(() -> new SynService(object).doSomething()).start(); + + Thread.sleep(1000 * 15); + } + +} \ No newline at end of file From 66ae6cd433d37b5466a8dd7ecfeba9eb445ada14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Fri, 13 Jan 2017 23:43:47 +0800 Subject: [PATCH 021/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E7=AB=A0=E7=9A=84README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...13\351\227\264\351\200\232\344\277\241.md" | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 "src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" diff --git "a/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" "b/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" new file mode 100644 index 0000000..cb08dd5 --- /dev/null +++ "b/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" @@ -0,0 +1,136 @@ +# Java多线程基础——线程间通信 +在使用多线程的时候,经常需要多个线程进行协作来完成一件事情。在前面两章分析了Java多线程的基本使用以及利用`synchronized`来实现多个线程同步调用方法或者执行代码块。但上面两章的内容涉及到的例子以及使用的多线程代码都是独自运行,两个程序除了竞争同一个对象以外,没有任何联系。 +这次内容将讲解当多个线程需要协作来完成一件事情的时候,如何去等待其他线程执行,又如何当线程执行完去通知其他线程结束等待。 +本次主要介绍如下内容: +- 等待/通知机制 +- join方法的使用 + +所有的代码均在[char03线程间通信](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/threadtutorial/char03) + +## 等待/通知机制 +Java中对多线程类提供了两个方法来完成等待/通知机制,等待的方法是-`wait()`,通知的方法是`notify()`。先说一下什么是等待/通知机制,所谓等待/通知机制,就是线程A在执行的时候,需要一个其他线程来提供的结果,但是其他线程还没有告诉他这个结果是什么,于是线程A开始等待,当其他线程计算出结果之后就将结果通知给线程A,A线程唤醒,继续执行。这个过程就是等待/通知机制。 +等待/通知机制实际上多个线程之间的一种互动,而为了保证这个互动仅限于期望的那些线程,因此需要多个线程拥有一个统一的对象监视器,也就是都要在`synchronized(x)`同步代码块中执行`x.wait`以及`x.notify`方法。 +如果细心观察,会发现wait方法和notify方法是Object类自带的方法。这个原因是因为任何一个对象都能成为监视器,而wait和notify只有对同一个监视器才能起到预期的作用。也就是说任何一个监视器都能用wait以及notify方法,任何对象都有的方法,自然就需要放到Object中 +### wait方法与notify方法的讲解 +wait方法会使执行该wait方法的线程停止,直到等到了notify的通知。细说一下,执行了wait方法的那个线程会因为wait方法而进入等待状态,该线程也会进入阻塞队列中。而执行了notify那个线程在执行完同步代码之后会通知在阻塞队列中的线程,使其进入就绪状态。被重新唤醒的线程会试图重新获得临界区的控制权,也就是对象锁,然后继续执行临界区也就是同步语句块中wait之后的代码。 +上面这个描述,可以看出一些细节。 +1. wait方法进入了阻塞队列,而上文讲过执行notify操作的线程与执行wait的线程是拥有同一个对象监视器,也就说wait方法执行之后,立刻释放掉锁,这样,另一个线程才能执行同步代码块,才能执行notify。 +2. notify线程会在执行完同步代码之后通知在阻塞队列中的线程,也就是说notify的那个线程并不是立即释放锁,而是在同步方法执行完,释放锁以后,wait方法的那个线程才会继续执行。 +3. 被重新唤醒的线程会试图重新获得锁,也就说,在notify方法的线程释放掉锁以后,其通知的线程是不确定的,看具体是哪一个阻塞队列中的线程获取到对象锁。 + +下面看一个例子: +``` +public class Service { + public void testMethod(Object lock){ + try{ + synchronized (lock){ + System.out.println("begin wait()"); + lock.wait(); + System.out.println(" end wait()"); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + public void synNotifyMethod(Object lock){ + try{ + synchronized (lock){ + System.out.println("begin notify() ThreadName=" + Thread.currentThread().getName() + + " time=" +System.currentTimeMillis()); + lock.notify(); + Thread.sleep(1000 * 1); + System.out.println("end notify() ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} +``` +该Service中有两个方法,一个是testMethod方法,包含了wait方法,另一个是synNotifyMethod方法了notify方法,我们首先看一下,wait方法会释放锁的测试。 +``` +public class ServiceThread extends Thread{ + private Object lock; + + public ServiceThread(Object lock){ + this.lock = lock; + } + + @Override + public void run() { + super.run(); + Service service = new Service(); + service.testMethod(lock); + } +} +``` +测试方法如下: +``` +public void testRun() throws Exception { + Object lock = new Object(); + new ServiceThread(lock).start(); + new ServiceThread(lock).start(); + Thread.sleep(1000 * 4); +} +``` +结果如下: +``` +begin wait() +begin wait() +``` +很明显结果是执行了2次同步代码块,其执行的原因,就是因为第一个wait之后,释放掉了对象锁,所以第二个线程才会执行同步代码块。 + +还是利用上面的代码,现在我们看一下,notify方法通知等待的线程, 但是不会立即释放锁的例子。 +``` +public class NotifyServiceThread extends Thread{ + private Object lock; + public NotifyServiceThread(Object lock){ + this.lock = lock; + } + + @Override + public void run() { + super.run(); + Service service = new Service(); + service.synNotifyMethod(lock); + } +} +``` +测试的例子如下: +``` +public class NotifyServiceThreadTest extends TestCase { + public void testRun() throws Exception { + Object lock = new Object(); + ServiceThread a = new ServiceThread(lock); + a.start(); + Thread.sleep(1000); + new NotifyServiceThread(lock).start(); + new NotifyServiceThread(lock).start(); + + Thread.sleep(1000 * 10); + } + +} +``` +其结果如下: +``` +begin wait() +begin notify() ThreadName=Thread-1 time=1484302436105 +end notify() ThreadName=Thread-1 time=1484302437108 +end wait() +begin notify() ThreadName=Thread-2 time=1484302437108 +end notify() ThreadName=Thread-2 time=1484302438110 +``` +测试方法,首先调用上wait的例子,让ServiceThread线程进入等待状态,然后执行2个含有notify操作的线程,可以看出,第一个notify执行完,wait线程并没有立即开始运行,而是Thread-1继续执行后续的notify方法,直到同步语句块结束,然后wait线程立即得到锁,并继续运行。之后Thread-2开始运行,直到结束,因为已经没有等待的线程,所以不会有后续的等待的线程运行。 +这里,可以看出一个细节,竞争锁的线程有3个,一个包含wait线程,两个包含notify线程。第一个notify执行结束,获得锁一定是阻塞的线程,而不是另一个notify的线程。 + + + + + + + + + From ec2d5bc99fdfe3152bbcc46ca5c4301fb850f82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sat, 14 Jan 2017 22:58:27 +0800 Subject: [PATCH 022/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../threadtutorial/char03/CommonNotify.java | 21 ++++++++++ .../threadtutorial/char03/CommonWait.java | 21 ++++++++++ .../char03test/CommonTest.java | 40 +++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/CommonNotify.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char03/CommonWait.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char03test/CommonTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/CommonNotify.java b/src/main/java/cn/byhieg/threadtutorial/char03/CommonNotify.java new file mode 100644 index 0000000..4f1e5ee --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/CommonNotify.java @@ -0,0 +1,21 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by byhieg on 17/1/15. + * Mail to byhieg@gmail.com + */ +public class CommonNotify { + + private Object object; + public CommonNotify(Object object){ + this.object = object; + } + + public void doNotify(){ + synchronized (object){ + System.out.println("准备通知"); + object.notifyAll(); + System.out.println("通知结束"); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char03/CommonWait.java b/src/main/java/cn/byhieg/threadtutorial/char03/CommonWait.java new file mode 100644 index 0000000..7b7ffe3 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char03/CommonWait.java @@ -0,0 +1,21 @@ +package cn.byhieg.threadtutorial.char03; + +/** + * Created by byhieg on 17/1/15. + * Mail to byhieg@gmail.com + */ +public class CommonWait { + + private Object object; + public CommonWait(Object object){ + this.object = object; + } + + public void doSomething() throws Exception{ + synchronized (object){ + System.out.println("begin wait " + Thread.currentThread().getName()); + object.wait(); + System.out.println("end wait " + Thread.currentThread().getName()); + } + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char03test/CommonTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char03test/CommonTest.java new file mode 100644 index 0000000..d731b16 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char03test/CommonTest.java @@ -0,0 +1,40 @@ +package cn.byhieg.threadtutorialtest.char03test; + +import cn.byhieg.threadtutorial.char03.CommonNotify; +import cn.byhieg.threadtutorial.char03.CommonWait; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/15. + * Mail to byhieg@gmail.com + */ +public class CommonTest extends TestCase{ + + public void testRun() throws Exception{ + Object lock = new Object(); + new Thread(()->{ + try { + new CommonWait(lock).doSomething(); + } catch (Exception e) { + e.printStackTrace(); + } + }).start(); + + new Thread(()->{ + try { + new CommonWait(lock).doSomething(); + } catch (Exception e) { + e.printStackTrace(); + } + }).start(); + + Thread.sleep(1000); + + new Thread(()->{ + new CommonNotify(lock).doNotify(); + }).start(); + + Thread.sleep(1000 * 3); + + } +} From f8ceee318c164e44d1edf075d4e32ce795a9f670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sun, 15 Jan 2017 23:33:44 +0800 Subject: [PATCH 023/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9threadtutorial?= =?UTF-8?q?=E4=B8=ADchar03=E7=9A=84README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...13\351\227\264\351\200\232\344\277\241.md" | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) diff --git "a/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" "b/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" index cb08dd5..e7c0b7d 100644 --- "a/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" +++ "b/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" @@ -125,10 +125,164 @@ end notify() ThreadName=Thread-2 time=1484302438110 ``` 测试方法,首先调用上wait的例子,让ServiceThread线程进入等待状态,然后执行2个含有notify操作的线程,可以看出,第一个notify执行完,wait线程并没有立即开始运行,而是Thread-1继续执行后续的notify方法,直到同步语句块结束,然后wait线程立即得到锁,并继续运行。之后Thread-2开始运行,直到结束,因为已经没有等待的线程,所以不会有后续的等待的线程运行。 这里,可以看出一个细节,竞争锁的线程有3个,一个包含wait线程,两个包含notify线程。第一个notify执行结束,获得锁一定是阻塞的线程,而不是另一个notify的线程。 +上面的程序展现了等待/通知机制是如何通过wait和notify实现。在这里,我们可以看出wait方法使线程进入等待,和`Thread.sleep`是很相似的。但是两者却截然不同,区别如下: +- wait使线程进入等待,是可以被通知唤醒的,但是sleep只能自己到时间唤醒。 +- wait方法是对象锁调用的成员方法,而sleep却是Thread类的静态方法 +- wait方法出现在同步方法或者同步代码块中,但是sleep方法可以出现在非同步代码中。 +wait和notify还提供了几个其他API,如`wait(long timeout)`该方法可以提供一个唤醒的时间,如果在时间内,没有其他线程唤醒该等待线程,则到设定的时间,会自动结束等待。 +因为notify仅仅能唤醒一个线程,所以Java提供了一个`notifyAll()`的方法来唤醒所有的线程,让所有的线程来竞争。我们看一下只唤醒一个线程和唤醒所有线程的不同。 +``` +public class CommonWait { + + private Object object; + public CommonWait(Object object){ + this.object = object; + } + + public void doSomething() throws Exception{ + synchronized (object){ + System.out.println("begin wait " + Thread.currentThread().getName()); + object.wait(); + System.out.println("end wait " + Thread.currentThread().getName()); + } + } +} +``` +``` +public class CommonNotify { + + private Object object; + public CommonNotify(Object object){ + this.object = object; + } + + public void doNotify(){ + synchronized (object){ + System.out.println("准备通知"); + object.notify(); + System.out.println("通知结束"); + } + } +} +``` +测试通知一个等待线程 +``` + public void testRun() throws Exception{ + Object lock = new Object(); + new Thread(()->{ + try { + new CommonWait(lock).doSomething(); + } catch (Exception e) { + e.printStackTrace(); + } + }).start(); + + new Thread(()->{ + try { + new CommonWait(lock).doSomething(); + } catch (Exception e) { + e.printStackTrace(); + } + }).start(); + + Thread.sleep(1000); + + new Thread(()->{ + new CommonNotify(lock).doNotify(); + }).start(); + + Thread.sleep(1000 * 3); + + } +``` +结果如下: +``` +begin wait Thread-0 +begin wait Thread-1 +准备通知 +通知结束 +end wait Thread-0 +``` +结果看来,只有一个线程结束了等待,继续往下面执行。另一个线程直到结束也没有执行。 +现在看一下notifyAll的效果,把`CommonNotify`这个类中的`object.notify();`改成`object.notifyAll()` +其他的不变,看看结果: +``` +begin wait Thread-0 +begin wait Thread-1 +准备通知 +通知结束 +end wait Thread-1 +end wait Thread-0 +``` +很明显,两个等待线程都执行了,而且这次Thread-1的线程先执行,可见通知唤醒是随机的。 +这里详细说一下,这个结果。wait使线程进入了阻塞状态,阻塞状态可以细分为3种: +- 等待阻塞:运行的线程执行wait方法,JVM会把该线程放入等待队列中。 +- 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池当中。 +- 其他阻塞: 运行的线程执行了`Thread.sleep`或者`join`方法,或者发出I/O请求时,JVM会把该线程置为阻塞状态。当`sleep()`状态超时、join()等待线程终止,或者超时、或者I/O处理完毕时,线程重新转入可运行状态。 + +可运行状态就是线程执行`start`时,就是可运行状态,一旦CPU切换到这个线程就开始执行里面的run方法就进入了运行状态。 +上面会出现这个结果,就是因为notify仅仅让一个线程进入了可运行状态,而另一个线程则还在阻塞中。而`notifyAll`则使所有的线程都从等待队列中出来,而因为同步代码的关系,获得锁的线程进入可运行态,没有得到锁的则进入锁池,也是阻塞状态,但是会因为锁的释放而重新进入可运行态。所以notifyAll会让所有wait的线程都会继续执行。 + +## join方法的使用 +wait方法使线程进入阻塞,并且因为通知而唤醒执行,sleep方法同样使线程进入阻塞,并且因此超时而结束阻塞。以上两者都是因为特定的条件而结束阻塞,现在主线程需要知道子线程的结果再继续执行,这个时候要怎么做,用通知/等待不是很好适用于这个情况,sleep则完全不知道要等待的时间。因此Java提供了一个`join()`方法,`join()`方法是Thread对象的方法,他的功能是使所属的线程对象x正常执行run方法的内容,而使当前线程z进行无限期的阻塞,等待线程x销毁后在继续执行线程z后面的代码。这说起来有点绕口,其实看例子就很简单。 +``` +public class JoinThread extends Thread{ + @Override + public void run() { + super.run(); + try{ + int secondValue = (int)(Math.random() * 10000); + System.out.println(secondValue); + Thread.sleep(secondValue); + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} +``` +其测试的方法如下: +``` + public void testRun() throws Exception { + JoinThread joinThread = new JoinThread(); + joinThread.start(); + joinThread.join(); + System.out.println("我想当Join对象执行完毕后我再执行,我做到了"); + } +``` +结果如下: +``` +3519 +我想当Join对象执行完毕后我再执行,我做到了 +``` +看上去join方法很神奇,可以实现线程在执行上面的次序。但是实际上join方法内部是通过wait实现的。 +``` + public final synchronized void join(long millis) + throws InterruptedException { + long base = System.currentTimeMillis(); + long now = 0; + if (millis < 0) { + throw new IllegalArgumentException("timeout value is negative"); + } + if (millis == 0) { + while (isAlive()) { + wait(0); + } + } else { + while (isAlive()) { + long delay = millis - now; + if (delay <= 0) { + break; + } + wait(delay); + now = System.currentTimeMillis() - base; + } + } + } +``` From 72aba063aa1c6a6391814f33555211becf7caf27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sun, 15 Jan 2017 23:59:57 +0800 Subject: [PATCH 024/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...347\250\213\351\227\264\351\200\232\344\277\241.md" | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git "a/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" "b/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" index e7c0b7d..09918ab 100644 --- "a/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" +++ "b/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" @@ -225,7 +225,7 @@ end wait Thread-0 上面会出现这个结果,就是因为notify仅仅让一个线程进入了可运行状态,而另一个线程则还在阻塞中。而`notifyAll`则使所有的线程都从等待队列中出来,而因为同步代码的关系,获得锁的线程进入可运行态,没有得到锁的则进入锁池,也是阻塞状态,但是会因为锁的释放而重新进入可运行态。所以notifyAll会让所有wait的线程都会继续执行。 ## join方法的使用 -wait方法使线程进入阻塞,并且因为通知而唤醒执行,sleep方法同样使线程进入阻塞,并且因此超时而结束阻塞。以上两者都是因为特定的条件而结束阻塞,现在主线程需要知道子线程的结果再继续执行,这个时候要怎么做,用通知/等待不是很好适用于这个情况,sleep则完全不知道要等待的时间。因此Java提供了一个`join()`方法,`join()`方法是Thread对象的方法,他的功能是使所属的线程对象x正常执行run方法的内容,而使当前线程z进行无限期的阻塞,等待线程x销毁后在继续执行线程z后面的代码。这说起来有点绕口,其实看例子就很简单。 +wait方法使线程进入阻塞,并且因为通知而唤醒执行,sleep方法同样使线程进入阻塞,并且因此超时而结束阻塞。以上两者都是因为特定的条件而结束阻塞,现在主线程需要知道子线程的结果再继续执行,这个时候要怎么做,用通知/等待不是很容易实现这个操作,sleep则完全不知道要等待的时间。因此Java提供了一个`join()`方法,`join()`方法是Thread对象的方法,他的功能是使所属的线程对象x正常执行run方法的内容,而使当前线程z进行无限期的阻塞,等待线程x销毁后在继续执行线程z后面的代码。这说起来有点绕口,其实看例子就很简单。 ``` public class JoinThread extends Thread{ @Override @@ -283,6 +283,14 @@ public class JoinThread extends Thread{ } } ``` +这个join的原理很简单,前面那些if条件不管,主要看while循环里面的,while循环就是不断去判断`this.isAlive`的结果,用上面的例子,这个this就是`joinThread`。然后关键的代码就是`wait(delay);`一个定时的wait。这个wait的对象也是this,就是`joinThread`。上面我们已经讲了wait一定要在同步方法或者同步代码块中,源码中join方法的修饰符就是一个`synchronized`,表明这是一个同步的方法。 +不要看调用wait是`joinThread`,是一个线程。但是真正因为wait进入阻塞状态的,是持有对象监视器的线程,这里的对象监视器是`joinThread`,持有他的是main线程,因为在main线程中执行了join这个同步方法。 +所以main线程不断的wait,直到调用join方法那个线程对象销毁,才继续向下执行。 +但是源码中只有wait的方法,没有notify的方法。因为notify这个操作是JVM通过检测线程对象销毁而调用的native方法,是C++实现的,在源码中是找不到对应这个wait方法而存在的notify方法的。 + +## 总结 +这里介绍了线程间通信的一种常见的方式——等待/通知机制。此外,还介绍了一种指定线程执行顺序的方法——join方法,并且讲解了其内部的实现。 + From b42461880496e79ec452d37dcafae6b106f04233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Mon, 16 Jan 2017 00:03:18 +0800 Subject: [PATCH 025/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" | 2 ++ 1 file changed, 2 insertions(+) diff --git "a/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" "b/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" index 09918ab..a277cd2 100644 --- "a/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" +++ "b/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" @@ -290,6 +290,8 @@ public class JoinThread extends Thread{ ## 总结 这里介绍了线程间通信的一种常见的方式——等待/通知机制。此外,还介绍了一种指定线程执行顺序的方法——join方法,并且讲解了其内部的实现。 +全部的代码都在[char03线程间通信](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/threadtutorial/char03) + From 9ef0e023c63bf19d74a2c46c597cc2e6d55a4d52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Mon, 16 Jan 2017 00:06:41 +0800 Subject: [PATCH 026/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A6=96=E9=A1=B5Rea?= =?UTF-8?q?dMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index d1abc8c..13defa7 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ ## ThreadTutorial内容说明 在源码路径下`cn.byhieg.threadtutorial`中放置的是Java多线程的代码和测试例子,在每一个章的包下,都有一个ReadMe来说明该章的知识点。 + 在char01包里放置Java多线程基本知识的代码。内容如下: 1. 如何使用多线程 @@ -20,6 +21,12 @@ 3. 对类加锁的同步处理 4. 保证可见性的关键字——volatile +在char03包里放置了Java线程间通信的知识的代码。内容如下: + +1. 等待/通知机制 +2. join方法的使用 + + ## ReflectionTutorial内容说明 在源码路径下`cn.byhieg.reflectiontutorial`中放置的是Java反射的代码和测试例子,在每一个章的包下,都有一个ReadMe来说明该章的知识点。 在包下面,不细分包,整个教程的讲解内容如下: From e90b3ad55c699fcd8d069db80f2d33bb5716a757 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Mon, 16 Jan 2017 00:12:20 +0800 Subject: [PATCH 027/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JavaTutorial\347\233\256\345\275\225.jpg" | Bin 68348 -> 98150 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/images/JavaTutorial\347\233\256\345\275\225.jpg" "b/images/JavaTutorial\347\233\256\345\275\225.jpg" index 64fe3ef3a594fdc85bc93a3e5b8045fa18918d2d..143d76490aa4b7bd300daa18d081439d64e1979d 100644 GIT binary patch literal 98150 zcmeFZ2Ut^0_aJ^D6agWE6e$uE6cnkVfFJ>pCMt*u3Q9zz_YM*WMT!(@0#+@Z=d(Vy*ZgVb7s!WxpU5(ITOYJV*=Q9 zM&C#uU}6G*WbhAQ-~eB}Kqq?uICl;>3;@6mfQ3l}UgeI?;p6DxDRER@5l}m2 zbdF`4B6$6T5Bvmo_3TX;Oah8n=E680ERs)!GA7w)jdXPpre-GkMrZYYGQvJ!9O|7dZAO&LuNl5a$U9^VmAt+ydcuAbjNJpVA%v1pm?o5Cf!RVCQbdB2~_WgQR(<&W9W-dq1N2!nK(y&e4we}f<0 zcD!T(rVE1Ub?!IMoBUdKz}80>>`P!jm`-=JGurN7aR7iwIQbe~0%4F2M9bU5Y#Se} z7h-?Q?zA2V9|7Sw7Z2m@Hh?rCWj_8Fx6`-VGjQ8cce|b2>21z7XG}p@1cWE;Tn)DI z!MY$+PhZnt+rT33?s|T^Ua&5f({?^T`332)i2FKTG6d7XdRbh3y)XS*mL=KVN#E#K z{31th!|n9#vO}J(KV=kb8!NN7pV>C=U|p>8Hr{#$APmxEHMMiUyxpJMus>kVWCPd% z9>7iTX$!amG(Z9{0}Oyu;HM|x4d&PbPJk_5b^M*C1fUCk^8?cy{yTJjY0KQN zbUavuSQJ@~g0}|CS(cM5YAou21Ph!+n?;M|G?=Q+qVYRzQ?Sf$9BsE}4y@%DI$mIn zc0cjVLEdXY9(@5D@QDL4JOH2HDf~;XB#ZdT{E-vkjc~HUOfKD|FxI5N6HBtQICJY`|DWzhNS~? z>iV;!8`uj@AkTJx;#uy`G@6msd;X}cm*vB??w!p@d-r6KKT@}Q!7k=J={yi|LLM@R*v64C}pKt4fgAy`Ng1Ouu19sj?Qq2I?I*lzi@Ty3{| zTe^PZ@Xvh>N-WPQ9#I}ip3^)qo&!8*f5(#G5#mweG31d3b3}h1w?E`t;?JCe{c;to z?YI8<_jPT*D^9;t0>^-f8teXAQhfIPUf28@I1Avo1z`3vUk2Fg^0C?vE075E%q{)DDr2rZLJ{-68^Y;IR z9;m3>0l>%psPfP6Ogm43^Vb-Iu?o&(?5O}iOJOi5&lwC_4oH6l06w`gJ^{Qtn9s8H zL74Uf%)CqxUM5BZ0IC`$R;HiVuY>_6W(W%_8~Y9pPA(9kbQi$P1c5NKKv-F~4GN|Z zFdtyyW#!waq{FuRf(`qAFMj3llxI66PZib*m~|1Pj^6Z+;NTP#+9ND-;Gne3p~EW2 zj;pGvpU^$6r*B|rbmrov%jOm!d$zai>>V7PoPB)#`~w1mZb#mUijIlB8<(1PKRqM! z!NW(-b6(`WeD(Ux+oIx<(z5ao6_s`M4UJ9BEv=uwb@%l4^$!dV;U@7@)8A)i=jMqk zt843|4f5vJHeXBt3TrtekD3t#ZhCid3QDQq4iL9l`^nk=9AgpxpE&!Su|N1429*Kx&kMrL z3}J;pAgpYx;KjCsZTs56x#Q=>`Rldw=f$&qL4Us(AQ2{z1`7)dJNUngi-T*||MJBc z1r1Pl#t^U*!UPHvgcpDVw6^DQvPTu4$H@Ty-2YL10AY0gGkE{0LJMJZ{WEy~xr6uZ zpTYaz9K6k{25c#;9=p?JgTA-2q^H24+deqRddE$r&6KAFOhFg!?cwd7YrMUwrJK-p zaBgBwy`*5NOWfM!DNa%8Vq=e~iJs4#i0m|+>Tzhj$rhV41K9XJ&Hz$nz!Dx=Uw72XD)l(>am6WBffSr%^8v$+28aL3i|fsgrArIFJOHy%uz&U@az z#cL@*^xG%X+H|HJcAevm-WmD1DEbgK-Qm=u8=AmBnbCc9l zIdOS4=S{ur5gr{DUx^jjk^<4m7;2h{AOjfK&j1*J(b&f$Po?9ZqgM@94cMHQqTcqe zU|Z3wR6*JkXp;ihb@CH(JVk2Qy47hqByCBw%s}k%Mo<@C%U3baLuRN$PLA`no_GiM&^Rm+nU{c--N@D@_buxIH^#Z=J%(#-1f6VY`qB|_7qXsg3sgXf)YUz2$rM{S|)0zZJi-m*A&M2&c-rZMGA zAicTawp~G3}K7rTZN2z~tN zvfWNL2N{iH=bW((p+Qae@tXeEh4Ws4Yp6Nt0W9GST@cmzI0rRRIm`eO!KsrIjdP%J zRI1Xs^0DO6fHjK-lq()SvxX%|(;YyZTQ=~SHWWdCZou?cWY}M*^`rD)!)hIyGzBUL z19*V?r|8c<{imD$5sAONX8(x9KO*rLkw6wwt_MoihKi8gUXBO)Xm_vWJv`=U>*OYP zGklP{dg_g1uaTLy+FbHU*&oiE>?F`TmU=Z8HDC{=9sGbPCakJ7bZFEy`Q7TyXveN< z=_YxPs3;@PK09;h^_np?=`tAsdeXY<5TqUNL0jLq;QI%UCzPh#s^E z1qQJ8bfLQyH4Yleaqvf))L~j5hHSTa^fUIa%cdF~S{!yN!x>8wMuUsA{Dp=2Efg=f zR0)b_07A1#T=mPFd^l7c{{=my5ow=8iRnl*hnUH0x0DYYxqU zkqlt}H4C!I|I};o{pfG6MZh5j;Fn9^LpKDiwpFP1pKUir??11_U%Uzbi?4+>$K>)* z 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

*^;bNY44ybW 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 literal 68348 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 O`F|HK`Ma@T?>_+x7+^gB From f5bed7ce2055fb0d0d6dde0d58a2ecd7145f062b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Mon, 16 Jan 2017 00:24:57 +0800 Subject: [PATCH 028/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/byhieg/threadtutorial/char03/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" => src/main/java/cn/byhieg/threadtutorial/char03/README.md (100%) diff --git "a/src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" b/src/main/java/cn/byhieg/threadtutorial/char03/README.md similarity index 100% rename from "src/main/java/cn/byhieg/threadtutorial/char03/java\345\244\232\347\272\277\347\250\213\345\237\272\347\241\200\342\200\224\342\200\224\347\272\277\347\250\213\351\227\264\351\200\232\344\277\241.md" rename to src/main/java/cn/byhieg/threadtutorial/char03/README.md From 25012aad67c6362ece789a9a7cb613a5ee1cfe61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sat, 26 Nov 2016 18:43:44 +0800 Subject: [PATCH 029/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0basistutorial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../byhieg/basistutorial/ExampleFather.java | 19 ++++++++++++++ .../cn/byhieg/basistutorial/ExtendFather.java | 26 +++++++++++++++++++ .../basistutorialtest/ExtendFatherTest.java | 16 ++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 src/main/java/cn/byhieg/basistutorial/ExampleFather.java create mode 100644 src/main/java/cn/byhieg/basistutorial/ExtendFather.java create mode 100644 src/test/java/cn/byhieg/basistutorialtest/ExtendFatherTest.java diff --git a/src/main/java/cn/byhieg/basistutorial/ExampleFather.java b/src/main/java/cn/byhieg/basistutorial/ExampleFather.java new file mode 100644 index 0000000..f19fadb --- /dev/null +++ b/src/main/java/cn/byhieg/basistutorial/ExampleFather.java @@ -0,0 +1,19 @@ +package cn.byhieg.basistutorial; + +/** + * Created by byhieg on 17/1/16. + * Mail to byhieg@gmail.com + */ +public class ExampleFather { + private int age = 40; + + + public int getAge(){ + return age; + } + + public ExampleFather(int age){ + this.age = 50; + } + +} diff --git a/src/main/java/cn/byhieg/basistutorial/ExtendFather.java b/src/main/java/cn/byhieg/basistutorial/ExtendFather.java new file mode 100644 index 0000000..1312450 --- /dev/null +++ b/src/main/java/cn/byhieg/basistutorial/ExtendFather.java @@ -0,0 +1,26 @@ +package cn.byhieg.basistutorial; + +/** + * Created by byhieg on 17/1/16. + * Mail to byhieg@gmail.com + */ +public class ExtendFather extends ExampleFather{ + + private int age = 20; + + @Override + public int getAge() { + return super.getAge(); + } + + + public ExtendFather(){ + super(10); + this.age = 30; + } + + public ExtendFather(int age){ + super(60); + this.age = age; + } +} diff --git a/src/test/java/cn/byhieg/basistutorialtest/ExtendFatherTest.java b/src/test/java/cn/byhieg/basistutorialtest/ExtendFatherTest.java new file mode 100644 index 0000000..354efca --- /dev/null +++ b/src/test/java/cn/byhieg/basistutorialtest/ExtendFatherTest.java @@ -0,0 +1,16 @@ +package cn.byhieg.basistutorialtest; + +import cn.byhieg.basistutorial.ExtendFather; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/16. + * Mail to byhieg@gmail.com + */ +public class ExtendFatherTest extends TestCase { + + public void testGetAge() throws Exception { + System.out.println(new ExtendFather(12).getAge()); + } + +} \ No newline at end of file From 41b331200f2781c8e3a743ec371c246655f0c4b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Fri, 27 Jan 2017 15:16:55 +0800 Subject: [PATCH 030/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial?= =?UTF-8?q?=E5=88=B04.1.10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../char04/ConditionAllService.java | 69 +++++++++++++++++++ .../char04/ConditionWaitNotifyService.java | 40 +++++++++++ .../threadtutorial/char04/FairService.java | 31 +++++++++ .../char04/MyConditionMoreService.java | 48 +++++++++++++ .../char04/MyConditionService.java | 21 ++++++ .../byhieg/threadtutorial/char04/ThreadA.java | 19 +++++ .../byhieg/threadtutorial/char04/ThreadB.java | 20 ++++++ .../char04test/ConditionAllServiceTest.java | 29 ++++++++ .../ConditionWaitNotifyServiceTest.java | 19 +++++ .../char04test/FairServiceTest.java | 28 ++++++++ .../MyConditionMoreServiceTest.java | 36 ++++++++++ .../char04test/MyConditionServiceTest.java | 23 +++++++ 12 files changed, 383 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/ConditionAllService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/ConditionWaitNotifyService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/FairService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/MyConditionMoreService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/MyConditionService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/ThreadA.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/ThreadB.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/ConditionAllServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/ConditionWaitNotifyServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/FairServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionMoreServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionServiceTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/ConditionAllService.java b/src/main/java/cn/byhieg/threadtutorial/char04/ConditionAllService.java new file mode 100644 index 0000000..b563dda --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/ConditionAllService.java @@ -0,0 +1,69 @@ +package cn.byhieg.threadtutorial.char04; + +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Created by byhieg on 17/1/27. + * Mail to byhieg@gmail.com + */ + +public class ConditionAllService { + private Lock lock = new ReentrantLock(); + public Condition conditionA = lock.newCondition(); + public Condition conditionB = lock.newCondition(); + + public void awaitA() { + try { + lock.lock(); + System.out.println("begin awaitA时间为 " + System.currentTimeMillis() + + "ThreadName=" + Thread.currentThread().getName()); + conditionA.await(); + System.out.println("end awaitA时间为" + System.currentTimeMillis() + + "ThreadName=" + Thread.currentThread().getName()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + lock.unlock(); + } + } + + public void awaitB() { + try { + lock.lock(); + System.out.println("begin awaitB时间为 " + System.currentTimeMillis() + + "ThreadName=" + Thread.currentThread().getName()); + conditionB.await(); + System.out.println("end awaitB时间为" + System.currentTimeMillis() + + "ThreadName=" + Thread.currentThread().getName()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + lock.unlock(); + } + } + + public void signAAll() { + try { + lock.lock(); + System.out.println("signAll的时间为" + System.currentTimeMillis() + + "ThreadName=" + Thread.currentThread().getName()); + conditionA.signalAll(); + } finally { + lock.unlock(); + } + } + + public void signBAll() { + try { + lock.lock(); + System.out.println("signAll的时间为" + System.currentTimeMillis() + + "ThreadName=" + Thread.currentThread().getName()); + conditionB.signalAll(); + } finally { + lock.unlock(); + } + } + +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/ConditionWaitNotifyService.java b/src/main/java/cn/byhieg/threadtutorial/char04/ConditionWaitNotifyService.java new file mode 100644 index 0000000..3606d29 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/ConditionWaitNotifyService.java @@ -0,0 +1,40 @@ +package cn.byhieg.threadtutorial.char04; + +import java.awt.*; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Created by byhieg on 17/1/27. + * Mail to byhieg@gmail.com + */ +public class ConditionWaitNotifyService { + + private Lock lock = new ReentrantLock(); + public Condition condition = lock.newCondition(); + + + public void await(){ + try{ + lock.lock(); + System.out.println("await的时间为 " + System.currentTimeMillis()); + condition.await(); + }catch (Exception e){ + e.printStackTrace(); + }finally { + lock.unlock(); + } + } + + + public void signal(){ + try{ + lock.lock(); + System.out.println("sign的时间为" + System.currentTimeMillis()); + condition.signal(); + }finally { + lock.unlock(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/FairService.java b/src/main/java/cn/byhieg/threadtutorial/char04/FairService.java new file mode 100644 index 0000000..a470daf --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/FairService.java @@ -0,0 +1,31 @@ +package cn.byhieg.threadtutorial.char04; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Created by byhieg on 17/1/27. + * Mail to byhieg@gmail.com + */ +public class FairService { + private Lock lock; + private boolean isFair; + + + public FairService(boolean isFair){ + lock = new ReentrantLock(isFair); + } + + public void setFair(boolean fair) { + isFair = fair; + } + + public void serviceMethod(){ + try{ + lock.lock(); + System.out.println("ThreadName=" + Thread.currentThread().getName() + "获得锁定"); + }finally { + lock.unlock(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/MyConditionMoreService.java b/src/main/java/cn/byhieg/threadtutorial/char04/MyConditionMoreService.java new file mode 100644 index 0000000..65d1642 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/MyConditionMoreService.java @@ -0,0 +1,48 @@ +package cn.byhieg.threadtutorial.char04; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Created by byhieg on 17/1/26. + * Mail to byhieg@gmail.com + */ +public class MyConditionMoreService { + + private Lock lock = new ReentrantLock(); + + + public void methodA(){ + try{ + lock.lock(); + System.out.println("methodA begin ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + Thread.sleep(1000 * 5); + + System.out.println("methodA end ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + }catch (Exception e){ + e.printStackTrace(); + }finally { + lock.unlock(); + } + } + + public void methodB(){ + try{ + lock.lock(); + System.out.println("methodB begin ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + Thread.sleep(1000 * 5); + + System.out.println("methodB end ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + }catch (Exception e){ + e.printStackTrace(); + }finally { + lock.unlock(); + } + } + + +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/MyConditionService.java b/src/main/java/cn/byhieg/threadtutorial/char04/MyConditionService.java new file mode 100644 index 0000000..a241540 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/MyConditionService.java @@ -0,0 +1,21 @@ +package cn.byhieg.threadtutorial.char04; + +import java.awt.*; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Created by byhieg on 17/1/26. + * Mail to byhieg@gmail.com + */ +public class MyConditionService { + + private Lock lock = new ReentrantLock(); + public void testMethod(){ + lock.lock(); + for (int i = 0 ;i < 5;i++){ + System.out.println("ThreadName = " + Thread.currentThread().getName() + (" " + (i + 1))); + } + lock.unlock(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/ThreadA.java b/src/main/java/cn/byhieg/threadtutorial/char04/ThreadA.java new file mode 100644 index 0000000..eca59b2 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/ThreadA.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorial.char04; + +/** + * Created by byhieg on 17/1/26. + * Mail to byhieg@gmail.com + */ +public class ThreadA extends Thread{ + + private MyConditionMoreService service; + + public ThreadA(MyConditionMoreService service){ + this.service = service; + } + + @Override + public void run() { + service.methodA(); + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/ThreadB.java b/src/main/java/cn/byhieg/threadtutorial/char04/ThreadB.java new file mode 100644 index 0000000..fa8dfc1 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/ThreadB.java @@ -0,0 +1,20 @@ +package cn.byhieg.threadtutorial.char04; + +/** + * Created by byhieg on 17/1/26. + * Mail to byhieg@gmail.com + */ +public class ThreadB extends Thread{ + + private MyConditionMoreService service; + + public ThreadB(MyConditionMoreService service){ + this.service = service; + } + + @Override + public void run() { + super.run(); + service.methodB(); + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/ConditionAllServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/ConditionAllServiceTest.java new file mode 100644 index 0000000..19aff24 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/ConditionAllServiceTest.java @@ -0,0 +1,29 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.ConditionAllService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/27. + * Mail to byhieg@gmail.com + */ +public class ConditionAllServiceTest extends TestCase { + public void testAwaitA() throws Exception { + ConditionAllService service = new ConditionAllService(); + Thread a = new Thread(service::awaitA); + a.setName("A"); + a.start(); + + Thread b = new Thread(service::awaitB); + b.setName("B"); + b.start(); + + Thread.sleep(1000 * 3); + + service.signAAll(); + + Thread.sleep(1000 * 4); + + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/ConditionWaitNotifyServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/ConditionWaitNotifyServiceTest.java new file mode 100644 index 0000000..a647b7a --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/ConditionWaitNotifyServiceTest.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.ConditionWaitNotifyService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/27. + * Mail to byhieg@gmail.com + */ +public class ConditionWaitNotifyServiceTest extends TestCase { + public void testAwait() throws Exception { + ConditionWaitNotifyService service = new ConditionWaitNotifyService(); + new Thread(service::await).start(); + Thread.sleep(1000 * 3); + service.signal(); + Thread.sleep(1000); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/FairServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/FairServiceTest.java new file mode 100644 index 0000000..6710d82 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/FairServiceTest.java @@ -0,0 +1,28 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.FairService; +import junit.framework.TestCase; + +import javax.security.auth.callback.ConfirmationCallback; + +/** + * Created by byhieg on 17/1/27. + * Mail to byhieg@gmail.com + */ +public class FairServiceTest extends TestCase { + public void testServiceMethod() throws Exception { + + FairService fairService = new FairService(false); + Thread[] threadArrays = new Thread[10]; + for (int i = 0 ; i < threadArrays.length;i++){ + threadArrays[i] = new Thread(fairService::serviceMethod); + } + + for (Thread thread : threadArrays){ + thread.start(); + } + + Thread.sleep(1000 * 5); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionMoreServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionMoreServiceTest.java new file mode 100644 index 0000000..bef0df4 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionMoreServiceTest.java @@ -0,0 +1,36 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.MyConditionMoreService; +import cn.byhieg.threadtutorial.char04.ThreadA; +import cn.byhieg.threadtutorial.char04.ThreadB; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/26. + * Mail to byhieg@gmail.com + */ +public class MyConditionMoreServiceTest extends TestCase { + + + public void testMethod() throws Exception { + MyConditionMoreService service = new MyConditionMoreService(); + ThreadA a = new ThreadA(service); + a.setName("A"); + a.start(); + + ThreadA aa = new ThreadA(service); + aa.setName("AA"); + aa.start(); + + ThreadB b = new ThreadB(service); + b.setName("B"); + b.start(); + + ThreadB bb = new ThreadB(service); + bb.setName("BB"); + bb.start(); + + Thread.sleep(1000 * 30); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionServiceTest.java new file mode 100644 index 0000000..e5a9690 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionServiceTest.java @@ -0,0 +1,23 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.MyConditionService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/26. + * Mail to byhieg@gmail.com + */ +public class MyConditionServiceTest extends TestCase { + + public void testTestMethod() throws Exception { + MyConditionService service = new MyConditionService(); + new Thread(service::testMethod).start(); + new Thread(service::testMethod).start(); + new Thread(service::testMethod).start(); + new Thread(service::testMethod).start(); + new Thread(service::testMethod).start(); + + Thread.sleep(1000 * 5); + } + +} \ No newline at end of file From a87e23c321ebe1eaf5fe481dc09f4c9464ea1cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sat, 28 Jan 2017 13:45:34 +0800 Subject: [PATCH 031/118] =?UTF-8?q?=E7=BB=93=E6=9D=9F=E5=A4=9A=E7=BA=BF?= =?UTF-8?q?=E7=A8=8BLock=E9=94=81=E5=86=85=E5=AE=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../char04/HoldCountService.java | 33 ++++++++++++++ .../char04/ReadReadService.java | 27 ++++++++++++ .../char04/ReadWriteService.java | 42 ++++++++++++++++++ .../char04/WriteReadService.java | 43 +++++++++++++++++++ .../char04/WriteWriteService.java | 26 +++++++++++ .../char04test/HoldCountServiceTest.java | 19 ++++++++ .../char04test/ReadReadServiceTest.java | 24 +++++++++++ .../char04test/ReadWriteServiceTest.java | 27 ++++++++++++ .../char04test/WriteReadServiceTest.java | 27 ++++++++++++ .../char04test/WriteWriteServiceTest.java | 23 ++++++++++ 10 files changed, 291 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/HoldCountService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/ReadReadService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/ReadWriteService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/WriteReadService.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/WriteWriteService.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/HoldCountServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/ReadReadServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/ReadWriteServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/WriteReadServiceTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char04test/WriteWriteServiceTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/HoldCountService.java b/src/main/java/cn/byhieg/threadtutorial/char04/HoldCountService.java new file mode 100644 index 0000000..6554ea8 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/HoldCountService.java @@ -0,0 +1,33 @@ +package cn.byhieg.threadtutorial.char04; + +import java.util.concurrent.locks.ReentrantLock; + +/** + * Created by byhieg on 17/1/27. + * Mail to byhieg@gmail.com + */ +public class HoldCountService { + private ReentrantLock lock = new ReentrantLock(); + + public void serviceMethod1(){ + try { + lock.lock(); + System.out.println("ServiceMethod1 getHoldCount=" + lock.getHoldCount()); + serviceMethod2(); + }finally { + lock.unlock(); + } + } + + public void serviceMethod2(){ + try { + lock.lock(); + System.out.println("ServiceMethod2 getHoldCount=" + lock.getHoldCount()); + }finally { + lock.unlock(); + } + } + + + +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/ReadReadService.java b/src/main/java/cn/byhieg/threadtutorial/char04/ReadReadService.java new file mode 100644 index 0000000..f1cafe3 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/ReadReadService.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorial.char04; + +import java.util.concurrent.locks.ReentrantReadWriteLock; + +/** + * Created by byhieg on 17/1/28. + * Mail to byhieg@gmail.com + */ +public class ReadReadService { + private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + + + public void read(){ + try{ + try{ + lock.readLock().lock(); + System.out.println("获得读锁" + Thread.currentThread().getName() + + " " + System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.readLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/ReadWriteService.java b/src/main/java/cn/byhieg/threadtutorial/char04/ReadWriteService.java new file mode 100644 index 0000000..52fec70 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/ReadWriteService.java @@ -0,0 +1,42 @@ +package cn.byhieg.threadtutorial.char04; + +import java.util.concurrent.locks.ReentrantReadWriteLock; + +/** + * Created by byhieg on 17/1/28. + * Mail to byhieg@gmail.com + */ +public class ReadWriteService { + private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + + public void read(){ + try{ + try{ + lock.readLock().lock(); + System.out.println("获得读锁" + Thread.currentThread().getName() + + " " + System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.readLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + public void write(){ + try{ + try{ + lock.writeLock().lock(); + System.out.println("获得写锁" + Thread.currentThread().getName() + + " " + System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.writeLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/WriteReadService.java b/src/main/java/cn/byhieg/threadtutorial/char04/WriteReadService.java new file mode 100644 index 0000000..802f95c --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/WriteReadService.java @@ -0,0 +1,43 @@ +package cn.byhieg.threadtutorial.char04; + +import java.util.concurrent.locks.ReentrantReadWriteLock; + +/** + * Created by byhieg on 17/1/28. + * Mail to byhieg@gmail.com + */ +public class WriteReadService { + + private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + + public void read(){ + try{ + try{ + lock.readLock().lock(); + System.out.println("获得读锁" + Thread.currentThread().getName() + + " " + System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.readLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + public void write(){ + try{ + try{ + lock.writeLock().lock(); + System.out.println("获得写锁" + Thread.currentThread().getName() + + " " + System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.writeLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/WriteWriteService.java b/src/main/java/cn/byhieg/threadtutorial/char04/WriteWriteService.java new file mode 100644 index 0000000..dc32b13 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/WriteWriteService.java @@ -0,0 +1,26 @@ +package cn.byhieg.threadtutorial.char04; + +import java.util.concurrent.locks.ReentrantReadWriteLock; + +/** + * Created by byhieg on 17/1/28. + * Mail to byhieg@gmail.com + */ +public class WriteWriteService { + private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + + public void write(){ + try{ + try{ + lock.writeLock().lock(); + System.out.println("获得写锁" + Thread.currentThread().getName() + + " " +System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.writeLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/HoldCountServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/HoldCountServiceTest.java new file mode 100644 index 0000000..5944d50 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/HoldCountServiceTest.java @@ -0,0 +1,19 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.HoldCountService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/27. + * Mail to byhieg@gmail.com + */ +public class HoldCountServiceTest extends TestCase { + public void testServiceMethod1() throws Exception { + + HoldCountService service = new HoldCountService(); + service.serviceMethod1(); + + Thread.sleep(1000 * 5); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/ReadReadServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/ReadReadServiceTest.java new file mode 100644 index 0000000..d7d1c92 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/ReadReadServiceTest.java @@ -0,0 +1,24 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.ReadReadService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/28. + * Mail to byhieg@gmail.com + */ +public class ReadReadServiceTest extends TestCase { + public void testRead() throws Exception { + ReadReadService service = new ReadReadService(); + Thread a = new Thread(service::read); + a.setName("A"); + + Thread b = new Thread(service::read); + b.setName("B"); + + a.start(); + b.start(); + + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/ReadWriteServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/ReadWriteServiceTest.java new file mode 100644 index 0000000..1e62ef3 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/ReadWriteServiceTest.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.ReadWriteService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/28. + * Mail to byhieg@gmail.com + */ +public class ReadWriteServiceTest extends TestCase { + public void testRead() throws Exception { + + ReadWriteService service = new ReadWriteService(); + Thread a = new Thread(service::read); + a.setName("AA"); + a.start(); + Thread.sleep(1000); + + Thread b = new Thread(service::write); + b.setName("BB"); + + + b.start(); + Thread.sleep(1000 * 30); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/WriteReadServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/WriteReadServiceTest.java new file mode 100644 index 0000000..0f6ac07 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/WriteReadServiceTest.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.WriteReadService; +import cn.byhieg.threadtutorial.char04.WriteWriteService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/28. + * Mail to byhieg@gmail.com + */ +public class WriteReadServiceTest extends TestCase { + public void testWrite() throws Exception { + + WriteReadService service = new WriteReadService(); + Thread a = new Thread(service::write); + a.setName("A"); + a.start(); + Thread.sleep(1000); + + Thread b = new Thread(service::read); + b.setName("B"); + b.start(); + + Thread.sleep(1000 * 30); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/WriteWriteServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/WriteWriteServiceTest.java new file mode 100644 index 0000000..9efd971 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/WriteWriteServiceTest.java @@ -0,0 +1,23 @@ +package cn.byhieg.threadtutorialtest.char04test; + +import cn.byhieg.threadtutorial.char04.WriteWriteService; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/1/28. + * Mail to byhieg@gmail.com + */ +public class WriteWriteServiceTest extends TestCase { + public void testWrite() throws Exception { + WriteWriteService service = new WriteWriteService(); + Thread a = new Thread(service::write); + a.setName("A"); + Thread b = new Thread(service::write); + b.setName("B"); + + a.start(); + b.start(); + Thread.sleep(1000 * 30); + } + +} \ No newline at end of file From d9368832ca92fd00ddd0180b50d8004074084485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sat, 28 Jan 2017 13:54:01 +0800 Subject: [PATCH 032/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9ReadMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JavaTutorial\347\233\256\345\275\225.jpg" | Bin 98150 -> 126959 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/images/JavaTutorial\347\233\256\345\275\225.jpg" "b/images/JavaTutorial\347\233\256\345\275\225.jpg" index 143d76490aa4b7bd300daa18d081439d64e1979d..22a4f8771f05ab798bd26ec77104801ed6058e58 100644 GIT binary patch literal 126959 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 z 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

*^;bNY44ybW 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 From 6278e853b93a92866aaabd1d231b986a8a59933c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sat, 28 Jan 2017 23:44:47 +0800 Subject: [PATCH 033/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../threadtutorial/char04/ConditionWaitNotifyService.java | 3 ++- .../char04test/MyConditionServiceTest.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/ConditionWaitNotifyService.java b/src/main/java/cn/byhieg/threadtutorial/char04/ConditionWaitNotifyService.java index 3606d29..ffd73dc 100644 --- a/src/main/java/cn/byhieg/threadtutorial/char04/ConditionWaitNotifyService.java +++ b/src/main/java/cn/byhieg/threadtutorial/char04/ConditionWaitNotifyService.java @@ -19,7 +19,8 @@ public void await(){ try{ lock.lock(); System.out.println("await的时间为 " + System.currentTimeMillis()); - condition.await(); + condition.awaitUninterruptibly(); + System.out.println("await结束的时间" + System.currentTimeMillis()); }catch (Exception e){ e.printStackTrace(); }finally { diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionServiceTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionServiceTest.java index e5a9690..f643082 100644 --- a/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionServiceTest.java +++ b/src/test/java/cn/byhieg/threadtutorialtest/char04test/MyConditionServiceTest.java @@ -3,6 +3,10 @@ import cn.byhieg.threadtutorial.char04.MyConditionService; import junit.framework.TestCase; +import java.util.Locale; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + /** * Created by byhieg on 17/1/26. * Mail to byhieg@gmail.com @@ -17,6 +21,8 @@ public void testTestMethod() throws Exception { new Thread(service::testMethod).start(); new Thread(service::testMethod).start(); + Lock lock = new ReentrantLock(true); + lock.lockInterruptibly(); Thread.sleep(1000 * 5); } From 0eb7263a287bcbbeb1e50f5d445354c7152a3e61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 1 Feb 2017 14:32:44 +0800 Subject: [PATCH 034/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=9A=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E4=BE=8B=E5=AD=90=EF=BC=8C=E7=94=9F=E4=BA=A7=E8=80=85?= =?UTF-8?q?/=E6=B6=88=E8=B4=B9=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../char05/more2more/value/Customer.java | 27 ++++++++ .../char05/more2more/value/Producer.java | 28 ++++++++ .../char05/more2more/value/ValueObject.java | 9 +++ .../char05/one2one/value/Customer.java | 26 ++++++++ .../char05/one2one/value/Producer.java | 27 ++++++++ .../char05/one2one/value/ValueObject.java | 9 +++ .../char05test/More2moreValueTest.java | 64 +++++++++++++++++++ .../char05test/One2oneValueTest.java | 43 +++++++++++++ 8 files changed, 233 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Customer.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Producer.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/ValueObject.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/Customer.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/Producer.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/ValueObject.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char05test/More2moreValueTest.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char05test/One2oneValueTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Customer.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Customer.java new file mode 100644 index 0000000..0657755 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Customer.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorial.char05.more2more.value; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Customer { + + private String lock; + + public Customer(String lock) { + this.lock = lock; + } + + public void getValue() throws InterruptedException{ + synchronized (lock) { + while (ValueObject.value.equals("")){ + System.out.println("消费者 "+ Thread.currentThread().getName() + " WAITING了☆"); + lock.wait(); + } + System.out.println("消费者 " + Thread.currentThread().getName() + " RUNNING了"); + String value = ValueObject.value; + ValueObject.value = ""; + lock.notify(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Producer.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Producer.java new file mode 100644 index 0000000..d92c641 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Producer.java @@ -0,0 +1,28 @@ +package cn.byhieg.threadtutorial.char05.more2more.value; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Producer { + + private String lock; + + public Producer(String lock) { + this.lock = lock; + } + + public void setValue() throws InterruptedException { + synchronized (lock) { + if (!ValueObject.value.equals("")) { + System.out.println("生产者 " + Thread.currentThread().getName() + " WAITING了★"); + lock.wait(); + } + System.out.println("生产者 " + Thread.currentThread().getName() + " RUNNABLE了"); + String value = System.currentTimeMillis() + "_" + System.nanoTime(); + ValueObject.value = value; + lock.notify(); + } + + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/ValueObject.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/ValueObject.java new file mode 100644 index 0000000..7fdb260 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/ValueObject.java @@ -0,0 +1,9 @@ +package cn.byhieg.threadtutorial.char05.more2more.value; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class ValueObject { + public static String value = ""; +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/Customer.java b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/Customer.java new file mode 100644 index 0000000..b4c3b52 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/Customer.java @@ -0,0 +1,26 @@ +package cn.byhieg.threadtutorial.char05.one2one.value; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Customer { + + private String lock; + + public Customer(String lock) { + this.lock = lock; + } + + public void getValue() throws InterruptedException{ + synchronized (lock) { + if (ValueObject.value.equals("")){ + lock.wait(); + } + String value = ValueObject.value; + ValueObject.value = ""; + System.out.println("取到的值" + value); + lock.notify(); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/Producer.java b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/Producer.java new file mode 100644 index 0000000..7b11902 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/Producer.java @@ -0,0 +1,27 @@ +package cn.byhieg.threadtutorial.char05.one2one.value; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Producer { + + private String lock; + + public Producer(String lock) { + this.lock = lock; + } + + public void setValue() throws InterruptedException { + synchronized (lock) { + if (!ValueObject.value.equals("")) { + lock.wait(); + } + String value = System.currentTimeMillis() + "_" + System.nanoTime(); + System.out.println("set的值 " + value); + ValueObject.value = value; + lock.notify(); + } + + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/ValueObject.java b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/ValueObject.java new file mode 100644 index 0000000..69bb18e --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/value/ValueObject.java @@ -0,0 +1,9 @@ +package cn.byhieg.threadtutorial.char05.one2one.value; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class ValueObject { + public static String value = ""; +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char05test/More2moreValueTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char05test/More2moreValueTest.java new file mode 100644 index 0000000..dc91193 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char05test/More2moreValueTest.java @@ -0,0 +1,64 @@ +package cn.byhieg.threadtutorialtest.char05test; + +import cn.byhieg.threadtutorial.char04.ThreadA; + +import cn.byhieg.threadtutorial.char05.more2more.value.Customer; +import cn.byhieg.threadtutorial.char05.more2more.value.Producer; +import junit.framework.TestCase; +import sun.nio.cs.ext.MacThai; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class More2moreValueTest extends TestCase{ + public void testValue() throws Exception { + String lock = "lock"; + + Producer producer = new Producer(lock); + Customer customer = new Customer(lock); + + Thread [] pThread = new Thread[2]; + Thread [] cThread = new Thread[2]; + + for (int i = 0 ; i < 2;i++){ + pThread[i] = new Thread(()->{ + try { + for (int j = 0 ; j < 4;j++) { + producer.setValue(); + } + + } catch (InterruptedException e) { + e.printStackTrace(); + } + }); + pThread[i].setName("生产者" + (i + 1)); + pThread[i].start(); + + cThread[i] = new Thread(()->{ + try { + for (int j = 0 ; j< 4 ;j++){ + customer.getValue(); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + }); + + cThread[i].setName("消费者" + (i + 1)); + cThread[i].start(); + } + + Thread.sleep(1000); + Thread[] threadArray = new Thread[Thread.currentThread().getThreadGroup().activeCount()]; + Thread.currentThread().getThreadGroup().enumerate(threadArray); + for (Thread aThreadArray : threadArray) { + System.out.println(aThreadArray.getName() + " " + aThreadArray.getState()); + } + + + + } + + +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char05test/One2oneValueTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char05test/One2oneValueTest.java new file mode 100644 index 0000000..9dd4fe0 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char05test/One2oneValueTest.java @@ -0,0 +1,43 @@ +package cn.byhieg.threadtutorialtest.char05test; + +import cn.byhieg.threadtutorial.char05.one2one.value.Customer; +import cn.byhieg.threadtutorial.char05.one2one.value.Producer; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class One2oneValueTest extends TestCase { + + public void testValue() throws Exception{ + String lock = "lock"; + Producer producer = new Producer(lock); + Customer customer = new Customer(lock); + + new Thread(() -> { + try { + for (;;) { + producer.setValue(); + } + + } catch (InterruptedException e) { + e.printStackTrace(); + } + }).start(); + + + new Thread(()->{ + try { + for (;;) { + customer.getValue(); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + }).start(); + + Thread.sleep(1000 * 5); + } + +} From 5ad4b59c6aeb573051207890de6ab291e90cdeb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 1 Feb 2017 15:53:04 +0800 Subject: [PATCH 035/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial?= =?UTF-8?q?=E4=B8=AD=E7=94=9F=E4=BA=A7=E8=80=85=E5=92=8C=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E8=80=85=E7=9A=84=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../char05/more2more/value/Customer.java | 2 +- .../char05/more2more/value/Producer.java | 2 +- .../char05/one2one/list/Customer.java | 22 +++++++++ .../char05/one2one/list/MyQueue.java | 46 +++++++++++++++++++ .../char05/one2one/list/Producer.java | 22 +++++++++ .../char05test/One2oneListTest.java | 22 +++++++++ 6 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/Customer.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/MyQueue.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/Producer.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char05test/One2oneListTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Customer.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Customer.java index 0657755..c2ed08c 100644 --- a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Customer.java +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Customer.java @@ -21,7 +21,7 @@ public void getValue() throws InterruptedException{ System.out.println("消费者 " + Thread.currentThread().getName() + " RUNNING了"); String value = ValueObject.value; ValueObject.value = ""; - lock.notify(); + lock.notifyAll(); } } } diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Producer.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Producer.java index d92c641..ba9152f 100644 --- a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Producer.java +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/value/Producer.java @@ -21,7 +21,7 @@ public void setValue() throws InterruptedException { System.out.println("生产者 " + Thread.currentThread().getName() + " RUNNABLE了"); String value = System.currentTimeMillis() + "_" + System.nanoTime(); ValueObject.value = value; - lock.notify(); + lock.notifyAll(); } } diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/Customer.java b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/Customer.java new file mode 100644 index 0000000..4b83598 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/Customer.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char05.one2one.list; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Customer implements Runnable { + + private MyQueue queue; + + public Customer(MyQueue queue) { + this.queue = queue; + } + + + @Override + public void run() { + for (;;) { + System.out.println(queue.pop()); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/MyQueue.java b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/MyQueue.java new file mode 100644 index 0000000..31f44be --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/MyQueue.java @@ -0,0 +1,46 @@ +package cn.byhieg.threadtutorial.char05.one2one.list; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class MyQueue { + + private List lists = new ArrayList(); + + synchronized public void push(Object element){ + try { + if (lists.size() == 1) { + this.wait(); + } + lists.add(element); + this.notify(); + System.out.println("push = " + lists.size()); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + synchronized public Object pop(){ + Object value = new Object(); + try { + if (lists.size() == 0) { + System.out.println("pop操作中的" + Thread.currentThread().getName() + "呈现wait状态"); + this.wait(); + } + + value = "" + lists.get(0); + lists.remove(0); + this.notify(); + System.out.println("pop=" + lists.size()); + } catch (Exception e) { + e.printStackTrace(); + } + + return value; + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/Producer.java b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/Producer.java new file mode 100644 index 0000000..6dbacef --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/one2one/list/Producer.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char05.one2one.list; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Producer implements Runnable{ + + private MyQueue queue; + + public Producer(MyQueue queue) { + this.queue = queue; + } + + + @Override + public void run() { + for (;;) { + queue.push(System.currentTimeMillis()); + } + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char05test/One2oneListTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char05test/One2oneListTest.java new file mode 100644 index 0000000..78dd5ca --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char05test/One2oneListTest.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorialtest.char05test; + +import cn.byhieg.threadtutorial.char05.one2one.list.Customer; +import cn.byhieg.threadtutorial.char05.one2one.list.MyQueue; +import cn.byhieg.threadtutorial.char05.one2one.list.Producer; +import junit.framework.TestCase; +import org.omg.PortableServer.THREAD_POLICY_ID; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class One2oneListTest extends TestCase{ + + public void testList() throws Exception { + MyQueue queue = new MyQueue(); + + new Thread(new Customer(queue)).start(); + new Thread(new Producer(queue)).start(); + + } +} From e9092d2d794dff3c2921c7796e8cd01672bf570e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 1 Feb 2017 17:54:44 +0800 Subject: [PATCH 036/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial=20?= =?UTF-8?q?=E4=B8=AD1=E5=AF=B9=E5=A4=9A=E7=9A=84=E4=BE=8B=E5=AD=90?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../char05/one2more/Customer.java | 24 ++++++++++ .../char05/one2more/MyQueue.java | 46 +++++++++++++++++++ .../char05/one2more/Producer.java | 24 ++++++++++ .../char05test/One2moreListTest.java | 29 ++++++++++++ 4 files changed, 123 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/one2more/Customer.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/one2more/MyQueue.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/one2more/Producer.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char05test/One2moreListTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/one2more/Customer.java b/src/main/java/cn/byhieg/threadtutorial/char05/one2more/Customer.java new file mode 100644 index 0000000..87ceece --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/one2more/Customer.java @@ -0,0 +1,24 @@ +package cn.byhieg.threadtutorial.char05.one2more; + +import cn.byhieg.threadtutorial.char05.one2one.list.*; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Customer implements Runnable { + + private MyQueue queue; + + public Customer(MyQueue queue) { + this.queue = queue; + } + + + @Override + public void run() { + for (;;) { + System.out.println(queue.pop()); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/one2more/MyQueue.java b/src/main/java/cn/byhieg/threadtutorial/char05/one2more/MyQueue.java new file mode 100644 index 0000000..a2eec72 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/one2more/MyQueue.java @@ -0,0 +1,46 @@ +package cn.byhieg.threadtutorial.char05.one2more; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class MyQueue { + + private List lists = new ArrayList(); + + synchronized public void push(Object element){ + try { + while(lists.size() == 1) { + this.wait(); + } + lists.add(element); + this.notifyAll(); + System.out.println("push = " + lists.size()); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + synchronized public Object pop(){ + Object value = new Object(); + try { + while(lists.size() == 0) { + System.out.println("pop操作中的" + Thread.currentThread().getName() + "呈现wait状态"); + this.wait(); + } + + value = "" + lists.get(0); + lists.remove(0); + this.notifyAll(); + System.out.println("pop=" + lists.size()); + } catch (Exception e) { + e.printStackTrace(); + } + + return value; + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/one2more/Producer.java b/src/main/java/cn/byhieg/threadtutorial/char05/one2more/Producer.java new file mode 100644 index 0000000..93709a7 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/one2more/Producer.java @@ -0,0 +1,24 @@ +package cn.byhieg.threadtutorial.char05.one2more; + +import cn.byhieg.threadtutorial.char05.one2one.list.*; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Producer implements Runnable{ + + private MyQueue queue; + + public Producer(MyQueue queue) { + this.queue = queue; + } + + + @Override + public void run() { + for (;;) { + queue.push(System.currentTimeMillis()); + } + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char05test/One2moreListTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char05test/One2moreListTest.java new file mode 100644 index 0000000..f6dee8d --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char05test/One2moreListTest.java @@ -0,0 +1,29 @@ +package cn.byhieg.threadtutorialtest.char05test; + +import cn.byhieg.threadtutorial.char05.one2more.Customer; +import cn.byhieg.threadtutorial.char05.one2more.MyQueue; +import cn.byhieg.threadtutorial.char05.one2more.Producer; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class One2moreListTest extends TestCase { + + public void testList() throws Exception { + MyQueue queue = new MyQueue(); + + new Thread(new Producer(queue)).start(); + new Thread(new Customer(queue)).start(); + + new Thread(new Customer(queue)).start(); + new Thread(new Customer(queue)).start(); + new Thread(new Customer(queue)).start(); + new Thread(new Customer(queue)).start(); + + Thread.sleep(1000 * 3); + + + } +} From 16455f969162b977eb9fe75b2591e25d4d28e94f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 1 Feb 2017 18:02:06 +0800 Subject: [PATCH 037/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial?= =?UTF-8?q?=E4=B8=AD=E5=A4=9A=E5=AF=B9=E4=B8=80=E7=9A=84=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=80=85=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../char05/more2more/list/Customer.java | 22 +++++++++ .../char05/more2more/list/MyQueue.java | 46 +++++++++++++++++++ .../char05/more2more/list/Producer.java | 22 +++++++++ .../char05/more2one/Customer.java | 22 +++++++++ .../char05/more2one/MyQueue.java | 46 +++++++++++++++++++ .../char05/more2one/Producer.java | 22 +++++++++ .../char05test/More2oneListTest.java | 28 +++++++++++ 7 files changed, 208 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/Customer.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/MyQueue.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/Producer.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/more2one/Customer.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/more2one/MyQueue.java create mode 100644 src/main/java/cn/byhieg/threadtutorial/char05/more2one/Producer.java create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char05test/More2oneListTest.java diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/Customer.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/Customer.java new file mode 100644 index 0000000..7a9502c --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/Customer.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char05.more2more.list; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Customer implements Runnable { + + private MyQueue queue; + + public Customer(MyQueue queue) { + this.queue = queue; + } + + + @Override + public void run() { + for (;;) { + System.out.println(queue.pop()); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/MyQueue.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/MyQueue.java new file mode 100644 index 0000000..c66ca47 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/MyQueue.java @@ -0,0 +1,46 @@ +package cn.byhieg.threadtutorial.char05.more2more.list; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class MyQueue { + + private List lists = new ArrayList(); + + synchronized public void push(Object element){ + try { + while(lists.size() == 1) { + this.wait(); + } + lists.add(element); + this.notifyAll(); + System.out.println("push = " + lists.size()); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + synchronized public Object pop(){ + Object value = new Object(); + try { + while(lists.size() == 0) { + System.out.println("pop操作中的" + Thread.currentThread().getName() + "呈现wait状态"); + this.wait(); + } + + value = "" + lists.get(0); + lists.remove(0); + this.notifyAll(); + System.out.println("pop=" + lists.size()); + } catch (Exception e) { + e.printStackTrace(); + } + + return value; + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/Producer.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/Producer.java new file mode 100644 index 0000000..c8f454b --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2more/list/Producer.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char05.more2more.list; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Producer implements Runnable{ + + private MyQueue queue; + + public Producer(MyQueue queue) { + this.queue = queue; + } + + + @Override + public void run() { + for (;;) { + queue.push(System.currentTimeMillis()); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2one/Customer.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2one/Customer.java new file mode 100644 index 0000000..8224813 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2one/Customer.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char05.more2one; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Customer implements Runnable { + + private MyQueue queue; + + public Customer(MyQueue queue) { + this.queue = queue; + } + + + @Override + public void run() { + for (;;) { + System.out.println("取出的数据是" + queue.pop()); + } + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2one/MyQueue.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2one/MyQueue.java new file mode 100644 index 0000000..51e2113 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2one/MyQueue.java @@ -0,0 +1,46 @@ +package cn.byhieg.threadtutorial.char05.more2one; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class MyQueue { + + private List lists = new ArrayList(); + + synchronized public void push(Object element){ + try { + while(lists.size() == 1) { + this.wait(); + } + lists.add(element); + this.notifyAll(); + System.out.println("push = " + lists.size()); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + synchronized public Object pop(){ + Object value = new Object(); + try { + while(lists.size() == 0) { + System.out.println("pop操作中的" + Thread.currentThread().getName() + "呈现wait状态"); + this.wait(); + } + + value = "" + lists.get(0); + lists.remove(0); + this.notifyAll(); + System.out.println("pop=" + lists.size()); + } catch (Exception e) { + e.printStackTrace(); + } + + return value; + } +} diff --git a/src/main/java/cn/byhieg/threadtutorial/char05/more2one/Producer.java b/src/main/java/cn/byhieg/threadtutorial/char05/more2one/Producer.java new file mode 100644 index 0000000..7b803e1 --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char05/more2one/Producer.java @@ -0,0 +1,22 @@ +package cn.byhieg.threadtutorial.char05.more2one; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class Producer implements Runnable{ + + private MyQueue queue; + + public Producer(MyQueue queue) { + this.queue = queue; + } + + + @Override + public void run() { + for (;;) { + queue.push(System.currentTimeMillis()); + } + } +} diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char05test/More2oneListTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char05test/More2oneListTest.java new file mode 100644 index 0000000..f55e3c3 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char05test/More2oneListTest.java @@ -0,0 +1,28 @@ +package cn.byhieg.threadtutorialtest.char05test; + + +import cn.byhieg.threadtutorial.char05.more2one.Customer; +import cn.byhieg.threadtutorial.char05.more2one.MyQueue; +import cn.byhieg.threadtutorial.char05.more2one.Producer; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class More2oneListTest extends TestCase { + + public void testList() throws Exception{ + MyQueue queue = new MyQueue(); + + new Thread(new Producer(queue)).start(); + new Thread(new Producer(queue)).start(); + new Thread(new Producer(queue)).start(); + new Thread(new Producer(queue)).start(); + new Thread(new Producer(queue)).start(); + + new Thread(new Customer(queue)).start(); + + Thread.sleep(1000 * 3); + } +} From 5122994baa6e515e0f14b46ee0548243564a4114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 1 Feb 2017 18:13:03 +0800 Subject: [PATCH 038/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTurorial?= =?UTF-8?q?=E4=B8=AD=E5=A4=9A=E5=AF=B9=E5=A4=9A=E7=94=9F=E4=BA=A7=E8=80=85?= =?UTF-8?q?/=E6=B6=88=E8=B4=B9=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../char05test/More2moreListTest.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/test/java/cn/byhieg/threadtutorialtest/char05test/More2moreListTest.java diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char05test/More2moreListTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char05test/More2moreListTest.java new file mode 100644 index 0000000..f07c8d5 --- /dev/null +++ b/src/test/java/cn/byhieg/threadtutorialtest/char05test/More2moreListTest.java @@ -0,0 +1,33 @@ +package cn.byhieg.threadtutorialtest.char05test; + +import cn.byhieg.threadtutorial.char05.more2more.list.Customer; +import cn.byhieg.threadtutorial.char05.more2more.list.MyQueue; +import cn.byhieg.threadtutorial.char05.more2more.list.Producer; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/2/1. + * Mail to byhieg@gmail.com + */ +public class More2moreListTest extends TestCase { + + public void testList() throws Exception{ + MyQueue queue = new MyQueue(); + new Thread(new Producer(queue)).start(); + new Thread(new Producer(queue)).start(); + new Thread(new Producer(queue)).start(); + new Thread(new Producer(queue)).start(); + new Thread(new Producer(queue)).start(); + + + new Thread(new Customer(queue)).start(); + new Thread(new Customer(queue)).start(); + new Thread(new Customer(queue)).start(); + new Thread(new Customer(queue)).start(); + new Thread(new Customer(queue)).start(); + + + Thread.sleep(1000 * 5); + } + +} From c9bb7210499f743ca5f40809b7d4daf2f0f2b0ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 7 Feb 2017 09:25:03 +0800 Subject: [PATCH 039/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9ReadMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JavaTutorial\347\233\256\345\275\225.jpg" | Bin 126959 -> 152103 bytes .../byhieg/basistutorial/ExampleFather.java | 19 ------------- .../cn/byhieg/basistutorial/ExtendFather.java | 26 ------------------ 3 files changed, 45 deletions(-) delete mode 100644 src/main/java/cn/byhieg/basistutorial/ExampleFather.java delete mode 100644 src/main/java/cn/byhieg/basistutorial/ExtendFather.java diff --git "a/images/JavaTutorial\347\233\256\345\275\225.jpg" "b/images/JavaTutorial\347\233\256\345\275\225.jpg" index 22a4f8771f05ab798bd26ec77104801ed6058e58..522ab08cfda248da267fd1910787365ef6b284f4 100644 GIT binary patch literal 152103 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 E7p?Uz0{{R3 literal 126959 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 Date: Tue, 7 Feb 2017 14:01:35 +0800 Subject: [PATCH 040/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0list=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listtutorial/ArrayListDemo.java | 31 +++++++++++++++++++ .../basistutorialtest/ExtendFatherTest.java | 16 ---------- .../ArrayListDemoTest.java | 26 ++++++++++++++++ 3 files changed, 57 insertions(+), 16 deletions(-) create mode 100644 src/main/java/cn/byhieg/collectiontutorial/listtutorial/ArrayListDemo.java delete mode 100644 src/test/java/cn/byhieg/basistutorialtest/ExtendFatherTest.java create mode 100644 src/test/java/cn/byhieg/collectiontutorialtest/ArrayListDemoTest.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/ArrayListDemo.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/ArrayListDemo.java new file mode 100644 index 0000000..9d87a9a --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/ArrayListDemo.java @@ -0,0 +1,31 @@ +package cn.byhieg.collectiontutorial.listtutorial; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by byhieg on 17/2/7. + * Mail to byhieg@gmail.com + */ +public class ArrayListDemo { + + private ArrayList listA = new ArrayList<>(); + private ArrayList listB = new ArrayList<>(5); + private ArrayList listC; + + public ArrayList getListA() { + return listA; + } + + public ArrayList getListB() { + return listB; + } + + public ArrayList getListC() { + return listC; + } + + public void setListC(Collection collection) { + listC = new ArrayList<>(collection); + } +} diff --git a/src/test/java/cn/byhieg/basistutorialtest/ExtendFatherTest.java b/src/test/java/cn/byhieg/basistutorialtest/ExtendFatherTest.java deleted file mode 100644 index 354efca..0000000 --- a/src/test/java/cn/byhieg/basistutorialtest/ExtendFatherTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.byhieg.basistutorialtest; - -import cn.byhieg.basistutorial.ExtendFather; -import junit.framework.TestCase; - -/** - * Created by byhieg on 17/1/16. - * Mail to byhieg@gmail.com - */ -public class ExtendFatherTest extends TestCase { - - public void testGetAge() throws Exception { - System.out.println(new ExtendFather(12).getAge()); - } - -} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/ArrayListDemoTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/ArrayListDemoTest.java new file mode 100644 index 0000000..b4d1815 --- /dev/null +++ b/src/test/java/cn/byhieg/collectiontutorialtest/ArrayListDemoTest.java @@ -0,0 +1,26 @@ +package cn.byhieg.collectiontutorialtest; + +import cn.byhieg.collectiontutorial.listtutorial.ArrayListDemo; +import junit.framework.TestCase; + +import java.util.Iterator; + +/** + * Created by byhieg on 17/2/7. + * Mail to byhieg@gmail.com + */ +public class ArrayListDemoTest extends TestCase { + + + public void testList() throws Exception{ + ArrayListDemo demo = new ArrayListDemo(); + for (int i = 0 ;i < 10 ; i++){ + demo.getListA().add(i); + } + Iterator iterator = demo.getListA().iterator(); + while (iterator.hasNext()) { + System.out.println(iterator.next()); + } + } + +} \ No newline at end of file From d07bbe357b074ea5c1d39fe42ddf1bf38519194b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 7 Feb 2017 15:53:48 +0800 Subject: [PATCH 041/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ArrayList=E7=9A=84Dem?= =?UTF-8?q?o=E4=BB=A5=E5=8F=8A=E8=87=AA=E5=B7=B1=E5=86=99=E7=9A=84?= =?UTF-8?q?=E7=AE=80=E5=8D=95=E7=9A=84ArrayList?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listtutorial/MyArrayList.java | 29 +++++++++++++++++++ .../ArrayListDemoTest.java | 14 ++++++--- 2 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 src/main/java/cn/byhieg/collectiontutorial/listtutorial/MyArrayList.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/MyArrayList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/MyArrayList.java new file mode 100644 index 0000000..1b026d0 --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/MyArrayList.java @@ -0,0 +1,29 @@ +package cn.byhieg.collectiontutorial.listtutorial; + +/** + * Created by byhieg on 17/2/7. + * Mail to byhieg@gmail.com + */ +public class MyArrayList { + + + private final static int DEFAULT_CAPACITY = 10; + private int size; + + private Object [] elementData; + + //默认的构造方法 + public MyArrayList(){ + this(DEFAULT_CAPACITY); + } + + public MyArrayList(int size){ + if (size < 0){ + throw new IllegalArgumentException("默认的大小" + size); + }else{ + elementData = new Object[size]; + } + } + + +} diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/ArrayListDemoTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/ArrayListDemoTest.java index b4d1815..3d5407b 100644 --- a/src/test/java/cn/byhieg/collectiontutorialtest/ArrayListDemoTest.java +++ b/src/test/java/cn/byhieg/collectiontutorialtest/ArrayListDemoTest.java @@ -2,7 +2,6 @@ import cn.byhieg.collectiontutorial.listtutorial.ArrayListDemo; import junit.framework.TestCase; - import java.util.Iterator; /** @@ -17,10 +16,17 @@ public void testList() throws Exception{ for (int i = 0 ;i < 10 ; i++){ demo.getListA().add(i); } - Iterator iterator = demo.getListA().iterator(); - while (iterator.hasNext()) { - System.out.println(iterator.next()); + Iterator iteratorA = demo.getListA().iterator(); + while (iteratorA.hasNext()) { + System.out.println(iteratorA.next()); + } + + demo.setListC(demo.getListA()); + Iterator iteratorC = demo.getListC().iterator(); + while (iteratorC.hasNext()) { + System.out.println(iteratorC.next()); } + } } \ No newline at end of file From 4c3bb7aaffeee2cdc8dff2ec8f8fb3ea4d28a6fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 7 Feb 2017 23:55:54 +0800 Subject: [PATCH 042/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0SimpleArrayList?= =?UTF-8?q?=E7=9A=84get=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listtutorial/MyArrayList.java | 29 ------- .../listtutorial/SimpleArrayList.java | 76 +++++++++++++++++++ .../SimpleArrayListTest.java | 24 ++++++ 3 files changed, 100 insertions(+), 29 deletions(-) delete mode 100644 src/main/java/cn/byhieg/collectiontutorial/listtutorial/MyArrayList.java create mode 100644 src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java create mode 100644 src/test/java/cn/byhieg/collectiontutorialtest/SimpleArrayListTest.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/MyArrayList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/MyArrayList.java deleted file mode 100644 index 1b026d0..0000000 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/MyArrayList.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.byhieg.collectiontutorial.listtutorial; - -/** - * Created by byhieg on 17/2/7. - * Mail to byhieg@gmail.com - */ -public class MyArrayList { - - - private final static int DEFAULT_CAPACITY = 10; - private int size; - - private Object [] elementData; - - //默认的构造方法 - public MyArrayList(){ - this(DEFAULT_CAPACITY); - } - - public MyArrayList(int size){ - if (size < 0){ - throw new IllegalArgumentException("默认的大小" + size); - }else{ - elementData = new Object[size]; - } - } - - -} diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java new file mode 100644 index 0000000..835f7af --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java @@ -0,0 +1,76 @@ +package cn.byhieg.collectiontutorial.listtutorial; + +import java.util.Arrays; + +/** + * Created by byhieg on 17/2/7. + * Mail to byhieg@gmail.com + */ +public class SimpleArrayList { + + + private final static int DEFAULT_CAPACITY = 10; + private int size = 0; + + private Object [] elementData; + + public SimpleArrayList(){ + this(DEFAULT_CAPACITY); + } + + + public SimpleArrayList(int size){ + if (size < 0){ + throw new IllegalArgumentException("默认的大小" + size); + }else{ + elementData = new Object[size]; + } + } + + + public void add(E e){ + isCapacityEnough(size + 1); + elementData[size++] = e; + } + + public void add(int index, E e) { + checkRangeForAdd(index); + isCapacityEnough(size + 1); + System.arraycopy(elementData,index,elementData,index + 1,size - index); + elementData[index] = e; + size++; + } + + private void isCapacityEnough(int size){ + if (size > DEFAULT_CAPACITY){ + explicitCapacity(size); + } + if (size < 0){ + throw new OutOfMemoryError(); + } + } + private final static int MAX_ARRAY_LENGTH = Integer.MAX_VALUE - 8; + + private void explicitCapacity(int capacity){ + int newLength = elementData.length * 2; + if (newLength - capacity < 0){ + newLength = capacity; + } + if (newLength > (MAX_ARRAY_LENGTH)){ + newLength = (capacity > MAX_ARRAY_LENGTH ? Integer.MAX_VALUE : MAX_ARRAY_LENGTH); + } + elementData = Arrays.copyOf(elementData, newLength); + } + + private void checkRangeForAdd(int index){ + if (index < 0 || index > size){ + throw new IndexOutOfBoundsException("指定的index超过界限"); + } + } + + public E get(int index){ + + } + + +} diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/SimpleArrayListTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleArrayListTest.java new file mode 100644 index 0000000..76d7ca0 --- /dev/null +++ b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleArrayListTest.java @@ -0,0 +1,24 @@ +package cn.byhieg.collectiontutorialtest; + +import cn.byhieg.collectiontutorial.listtutorial.SimpleArrayList; +import junit.framework.TestCase; + +import java.util.ArrayList; + +/** + * Created by byhieg on 17/2/7. + * Mail to byhieg@gmail.com + */ +public class SimpleArrayListTest extends TestCase { + public void testAdd() throws Exception { + SimpleArrayList list = new SimpleArrayList<>(); + for (int i = 0 ; i < 20 ; i++){ + list.add(i); + } + + list.add(5,15); + + System.out.println("aaa"); + } + +} \ No newline at end of file From aaf06bd861a4b0c2347a7db89aededd04f9e0223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 8 Feb 2017 12:19:54 +0800 Subject: [PATCH 043/118] =?UTF-8?q?=E5=AE=8C=E6=88=90SimpleArrayList?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listtutorial/SimpleArrayList.java | 61 ++++++++++++++++++- .../SimpleArrayListTest.java | 7 ++- 2 files changed, 63 insertions(+), 5 deletions(-) diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java index 835f7af..06d81fd 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java @@ -1,12 +1,15 @@ package cn.byhieg.collectiontutorial.listtutorial; +import java.io.Serializable; +import java.lang.annotation.ElementType; import java.util.Arrays; +import java.util.RandomAccess; /** * Created by byhieg on 17/2/7. * Mail to byhieg@gmail.com */ -public class SimpleArrayList { +public class SimpleArrayList implements RandomAccess,Cloneable,Serializable{ private final static int DEFAULT_CAPACITY = 10; @@ -68,9 +71,63 @@ private void checkRangeForAdd(int index){ } } + private void checkRange(int index) { + if (index >= size || index < 0){ + throw new IndexOutOfBoundsException("指定的index超过界限"); + } + } public E get(int index){ + checkRange(index); + return (E)elementData[index]; + } + + public int indexOf(Object o){ + if (o != null) { + for (int i = 0 ; i < size ; i++){ + if (elementData[i].equals(0)){ + return i; + } + } + }else { + for (int i = 0 ; i < size ; i++){ + if (elementData[i] == null) { + return i; + } + } + } + + return -1; + } + + public boolean contains(Object o){ + return indexOf(o) >= 0; + } + + public int size(){ + return size; + } + public boolean isEmpty(){ + return size() == 0; } - + + public E remove(int index) { + E value = get(index); + int moveSize = size - index - 1; + if (moveSize > 0){ + System.arraycopy(elementData,index + 1, elementData,index,size - index - 1); + } + elementData[--size] = null; + return value; + } + + public boolean remove(Object o){ + if (contains(o)){ + remove(indexOf(o)); + return true; + }else { + return false; + } + } } diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/SimpleArrayListTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleArrayListTest.java index 76d7ca0..7be8acd 100644 --- a/src/test/java/cn/byhieg/collectiontutorialtest/SimpleArrayListTest.java +++ b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleArrayListTest.java @@ -16,9 +16,10 @@ public void testAdd() throws Exception { list.add(i); } - list.add(5,15); - - System.out.println("aaa"); + list.remove(1); + for (int i = 0 ; i < list.size(); i++) { + System.out.println(list.get(i)); + } } } \ No newline at end of file From 78449fcb9885d606db59d6e1e15fa6cc6ec47196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 8 Feb 2017 12:28:00 +0800 Subject: [PATCH 044/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collectiontutorial/listtutorial/README.md | 212 ++++++++++++++++++ .../listtutorial/SimpleArrayList.java | 3 +- 2 files changed, 213 insertions(+), 2 deletions(-) create mode 100644 src/main/java/cn/byhieg/collectiontutorial/listtutorial/README.md diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/README.md b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/README.md new file mode 100644 index 0000000..e14f77e --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/README.md @@ -0,0 +1,212 @@ +# 自己动手系列——实现一个简单的ArrayList +ArrayList是Java集合框架中一个经典的实现类。他比起常用的数组而言,明显的优点在于,可以随意的添加和删除元素而不需考虑数组的大小。处于练手的目的,实现一个简单的ArrayList,并且把实现的过程在此记录。 +实现的ArrayList主要的功能如下: + +- 默认构造器和一个参数的有参构造器 +- add方法 +- get方法 +- indexOf方法 +- contains方法 +- size方法 +- isEmpty方法 +- remove方法 +- sort方法 + +这个简单的ArrayList类 取名为`SimpleArrayList`,全部的代码查看[SimpleArrayList代码](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/collectiontutorial/listtutorial) + +## 构造器 + +源码ArrayList一共有三个构造器,一个无参构造器,一个参数为int型有参构造器,一个参数为Collection型的有参构造器。参数为Collection型的构造器用来实现将其他继承Collection类的容器类转换成ArrayList。SimpleArrayList类因为还没有手动实现其他的容器类,所以实现的构造方法只有2个。代码如下: + +``` + public SimpleArrayList(){ + this(DEFAULT_CAPACITY); + } + + + public SimpleArrayList(int size){ + if (size < 0){ + throw new IllegalArgumentException("默认的大小" + size); + }else{ + elementData = new Object[size]; + } + } +``` + +无参构造器中的 `DEFAULT_CAPACITY`是定义的私有变量,默认值是10,用来创建一个大小为10的数组。有参构造器中,int参数是用来生成一个指定大小的Object数组。将创建好的数组传给`elementData`。`elementData`是真正的用来存储元素的数组。 + +## add方法 +add 方法用来往容器中添加元素,add方法有两个重载方法,一个是add(E e),另一个是add(int index, E e)。add本身很简单,但是要处理动态数组,即数组大小不满足的时候,扩大数组的内存。具体的代码如下: + +``` + public void add(E e){ + isCapacityEnough(size + 1); + elementData[size++] = e; + } +``` + +方法`isCapacityEnough`就是来判断是否需要扩容,传入的参数就是最小的扩容空间。因为add一个元素,所以最小的扩容空间,即新的长度是所有元素+ 1。这里的size就是真正的元素个数。 + +``` + private void isCapacityEnough(int size){ + if (size > DEFAULT_CAPACITY){ + explicitCapacity(size); + } + if (size < 0){ + throw new OutOfMemoryError(); + } + } +``` +判断扩容的方法也很简单,判断需要扩容的空间是不是比默认的空间大。如果需要的空间比默认的空间大,就调用`explicitCapacity`进行扩容。这里有个size小于0的判断,出现size小于0主要是因为当size超过`Integer.MAX_VALUE`就会变成负数。 + +``` + private final static int MAX_ARRAY_LENGTH = Integer.MAX_VALUE - 8; + + private void explicitCapacity(int capacity){ + int newLength = elementData.length * 2; + if (newLength - capacity < 0){ + newLength = capacity; + } + if (newLength > (MAX_ARRAY_LENGTH)){ + newLength = (capacity > MAX_ARRAY_LENGTH ? Integer.MAX_VALUE : MAX_ARRAY_LENGTH); + } + elementData = Arrays.copyOf(elementData, newLength); + } +``` + +上面的代码是扩容的代码,首先,定义一个数组最大的容量的常量为最大值,这个值按照官方的源码中的解释是要有些VM保留了数组的头部信息在数组中,因此实际存放数据的大小就是整数的最大值 - 8 +然后设定一个要扩容的数组的大小,虽然上面说了有一个扩容空间的值 ** size + 1 ** ,这个是实际我们最小需要扩容的大小。但为了继续增加元素,而不频繁的扩容,因此一次性的申请多一些的扩容空间。这里newLength 打算申请为 数组长度的2倍,然后去判断这个长度是否满足需要的扩容空间的值。 即有了后续的两段代码 + +``` + if (newLength - capacity < 0){ + newLength = capacity; + } + if (newLength > (MAX_ARRAY_LENGTH)){ + newLength = (capacity > MAX_ARRAY_LENGTH ? Integer.MAX_VALUE : MAX_ARRAY_LENGTH); + } +``` + +如果2倍的长度仍然不满足,则申请到需要的扩容长度。在我们只增加一个元素的情况下,这个判断是永远不会生效的,但是如果有addAll方法,则增加的元素很多,就要导致一次申请2倍的长度是不够的。第二个判断是判断newLength的长度如果超过上面定义的数组最大长度则判断要需要的扩容空间是否大于数组最大长度,如果大于则newLength为 ** MAX_VALUE** ,否则为 ** MAX_ARRAY_LENGTH**。 +最后,真正实现数组扩容到设定长度的方法就没意思了,调用`Arrays.copyOf(elementData, newLength)`得到一个扩容后的数组。 +add的另一个重载方法也很简单。 + +``` + public void add(int index, E e) { + //判断是不是越界 + checkRangeForAdd(index); + //判断需不需要扩容 + isCapacityEnough(size + 1); + //将index的元素及以后的元素向后移一位 + System.arraycopy(elementData,index,elementData,index + 1,size - index); + //将index下标的值设为e + elementData[index] = e; + size++; + } +``` + +``` + private void checkRangeForAdd(int index){ + //这里index = size是被允许的,即支持头,中间,尾部插入 + if (index < 0 || index > size){ + throw new IndexOutOfBoundsException("指定的index超过界限"); + } + } +``` +至此,一个简单的add方法就实现完了。 + +## get方法 +get方法用来得到容器中指定下标的元素。方法实现比较简单,直接返回数组中指定下标的元素即可。 + +``` + private void checkRange(int index) { + if (index >= size || index < 0){ + throw new IndexOutOfBoundsException("指定的index超过界限"); + } + } + public E get(int index){ + checkRange(index); + return (E)elementData[index]; + } +``` + + +## indexOf方法 +indexOf方法用来得到指定元素的下标。实现起来比较简单,需要判断传入的元素,代码如下: + +``` + public int indexOf(Object o){ + if (o != null) { + for (int i = 0 ; i < size ; i++){ + if (elementData[i].equals(0)){ + return i; + } + } + }else { + for (int i = 0 ; i < size ; i++){ + if (elementData[i] == null) { + return i; + } + } + } + + return -1; + } +``` + +判断传入的元素是否为null,如果为null,则依次与null。如果不为空,则用`equals`依次比较。匹配成功就返回下标,匹配失败就返回-1。 + +## contains方法 +contains用来判断该容器中是否包含指定的元素。在有了indexOf方法的基础上,contains的实现就很简单了。 + +``` + public boolean contains(Object o){ + return indexOf(o) >= 0; + } +``` +## size方法 +size方法用来得到容器类的元素个数,实现很简单,直接返回size的大小即可。 +``` + public int size(){ + return size; + } +``` + +## isEmpty方法 +isEmpty方法用来判断容器是否为空,判断size方法的返回值是否为0即可。 +``` + public boolean isEmpty(){ + return size() == 0; + } +``` +## remove方法 +remove方法是用来对容器类的元素进行删除,与add一样,remove方法也有两个重载方法,分别是 +remove(Object o)和remove(int index) + +``` + public E remove(int index) { + E value = get(index); + int moveSize = size - index - 1; + if (moveSize > 0){ + System.arraycopy(elementData,index + 1, elementData,index,size - index - 1); + } + elementData[--size] = null; + return value; + } + + public boolean remove(Object o){ + if (contains(o)){ + remove(indexOf(o)); + return true; + }else { + return false; + } + } +``` + +第一个remove方法是核心方法,首先得到要删除的下标元素的值,然后判断index后面的要前移的元素的个数,如果个数大于零,则调用库方法,将index后面的元素向前移一位。最后`elementData[--size] = null;`缩减size大小,并将原最后一位置空。 +第二个remove方法不需要向第一个方法一样,需要告诉使用者要删除的下标对应的元素,只需要判断是否删除成功即可。如果要删除的元素在列表中,则删除成功,如果不在则失败。因此调用`contains`方法就可以判断是否要删除的元素在列表中。在则调用`remove(int index)`,不在则返回失败。 + +## 总结 +自此,一个简单的ArrayList就实现完了,实现的目的是为了弄清ArrayList动态数组的原理以及add与remove方法的内容实现。同时,也清楚了ArrayList最大的扩容空间就是Integer的最大值。该类的所有代码在[SimpleArrayList代码](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/collectiontutorial/listtutorial) + + diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java index 06d81fd..3d1940f 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java @@ -110,8 +110,7 @@ public int size(){ public boolean isEmpty(){ return size() == 0; } - - + public E remove(int index) { E value = get(index); int moveSize = size - index - 1; From 1a9f1a3213513870fab94071097de166397285eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 8 Feb 2017 19:51:54 +0800 Subject: [PATCH 045/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ReadMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README.md b/README.md index 13defa7..edcbb39 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,19 @@ 1. 等待/通知机制 2. join方法的使用 +在char04包里放置了Java中Lock类的知识的代码,内容如下: + +1. Lock类 +2. Lock类其他功能 +3. Condition类 +4. Condition类其他功能 +5. 读写锁 + +在char05包里放置了生产者/消费者的知识的代码,内容如下: + +1. 一对一 生产者/消费者 +2. 一对多 生产者/消费者 +3. 多对多 生产者/消费者 ## ReflectionTutorial内容说明 在源码路径下`cn.byhieg.reflectiontutorial`中放置的是Java反射的代码和测试例子,在每一个章的包下,都有一个ReadMe来说明该章的知识点。 @@ -41,6 +54,12 @@ Java通过反射获取如下内容: - 泛型 - 数组 +## CollectionTutorial内容说明 +在源码路径下`cn.byhieg.collectiontutorial.listtutorial`中放置的是Java集合类的代码和测试例子。在每一个包里面,都有一个ReadMe来说明该章的知识点。 +listtutorial中的知识点有 + +- ArrayList的使用 +- 实现一个简单的ArrayList From c334be5ed047843338b5de937f18fdada32c8d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 8 Feb 2017 20:22:03 +0800 Subject: [PATCH 046/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ThreadTutorial?= =?UTF-8?q?=E4=B8=ADchar04=E7=9A=84readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/byhieg/threadtutorial/char04/ReadMe.md | 451 ++++++++++++++++++ 1 file changed, 451 insertions(+) create mode 100644 src/main/java/cn/byhieg/threadtutorial/char04/ReadMe.md diff --git a/src/main/java/cn/byhieg/threadtutorial/char04/ReadMe.md b/src/main/java/cn/byhieg/threadtutorial/char04/ReadMe.md new file mode 100644 index 0000000..dc7e39e --- /dev/null +++ b/src/main/java/cn/byhieg/threadtutorial/char04/ReadMe.md @@ -0,0 +1,451 @@ +之前已经说道,JVM提供了synchronized关键字来实现对变量的同步访问以及用wait和notify来实现线程间通信。在jdk1.5以后,JAVA提供了Lock类来实现和synchronized一样的功能,并且还提供了Condition来显示线程间通信。 +Lock类是Java类来提供的功能,丰富的api使得Lock类的同步功能比synchronized的同步更强大。本文章的所有代码均在[Lock类例子的代码](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/threadtutorial/char04) +本文主要介绍一下内容: + +1. Lock类 +2. Lock类其他功能 +3. Condition类 +4. Condition类其他功能 +5. 读写锁 + +## Lock类 +Lock类实际上是一个接口,我们在实例化的时候实际上是实例化实现了该接口的类`Lock lock = new ReentrantLock();`。用synchronized的时候,synchronized可以修饰方法,或者对一段代码块进行同步处理。 +前面讲过,针对需要同步处理的代码设置对象监视器,比整个方法用synchronized修饰要好。Lock类的用法也是这样,通过Lock对象lock,用`lock.lock`来加锁,用`lock.unlock`来释放锁。在两者中间放置需要同步处理的代码。 +具体的例子如下: + +``` +public class MyConditionService { + + private Lock lock = new ReentrantLock(); + public void testMethod(){ + lock.lock(); + for (int i = 0 ;i < 5;i++){ + System.out.println("ThreadName = " + Thread.currentThread().getName() + (" " + (i + 1))); + } + lock.unlock(); + } +} +``` + +测试的代码如下: + +``` + MyConditionService service = new MyConditionService(); + new Thread(service::testMethod).start(); + new Thread(service::testMethod).start(); + new Thread(service::testMethod).start(); + new Thread(service::testMethod).start(); + new Thread(service::testMethod).start(); + + Thread.sleep(1000 * 5); +``` + +结果太长就不放出来,具体可以看我源码。总之,就是每个线程的打印1-5都是同步进行,顺序没有乱。 +通过下面的例子,可以看出Lock对象加锁的时候也是一个对象锁,持续对象监视器的线程才能执行同步代码,其他线程只能等待该线程释放对象监视器。 + +``` +public class MyConditionMoreService { + + private Lock lock = new ReentrantLock(); + public void methodA(){ + try{ + lock.lock(); + System.out.println("methodA begin ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + Thread.sleep(1000 * 5); + + System.out.println("methodA end ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + }catch (Exception e){ + e.printStackTrace(); + }finally { + lock.unlock(); + } + } + + public void methodB(){ + try{ + lock.lock(); + System.out.println("methodB begin ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + Thread.sleep(1000 * 5); + + System.out.println("methodB end ThreadName=" + Thread.currentThread().getName() + + " time=" + System.currentTimeMillis()); + }catch (Exception e){ + e.printStackTrace(); + }finally { + lock.unlock(); + } + } +} + +``` + +测试代码如下: + +``` + public void testMethod() throws Exception { + MyConditionMoreService service = new MyConditionMoreService(); + ThreadA a = new ThreadA(service); + a.setName("A"); + a.start(); + + ThreadA aa = new ThreadA(service); + aa.setName("AA"); + aa.start(); + + ThreadB b = new ThreadB(service); + b.setName("B"); + b.start(); + + ThreadB bb = new ThreadB(service); + bb.setName("BB"); + bb.start(); + + Thread.sleep(1000 * 30); + } + +public class ThreadA extends Thread{ + + private MyConditionMoreService service; + + public ThreadA(MyConditionMoreService service){ + this.service = service; + } + + @Override + public void run() { + service.methodA(); + } +} + +public class ThreadB extends Thread{ + + private MyConditionMoreService service; + + public ThreadB(MyConditionMoreService service){ + this.service = service; + } + + @Override + public void run() { + super.run(); + service.methodB(); + } +} +``` + +结果如下: + +``` +methodA begin ThreadName=A time=1485590913520 +methodA end ThreadName=A time=1485590918522 +methodA begin ThreadName=AA time=1485590918522 +methodA end ThreadName=AA time=1485590923525 +methodB begin ThreadName=B time=1485590923525 +methodB end ThreadName=B time=1485590928528 +methodB begin ThreadName=BB time=1485590928529 +methodB end ThreadName=BB time=1485590933533 +``` + +可以看出Lock类加锁确实是对象锁。针对同一个lock对象执行的`lock.lock`是获得对象监视器的线程才能执行同步代码 其他线程都要等待。 +在这个例子中,加锁,和释放锁都是在try-finally。这样的好处是在任何异常发生的情况下,都能保障锁的释放。 + +## Lock类其他的功能 +如果Lock类只有lock和unlock方法也太简单了,Lock类提供了丰富的加锁的方法和对加锁的情况判断。主要有 + +- 实现锁的公平 +- 获取当前线程调用lock的次数,也就是获取当前线程锁定的个数 +- 获取等待锁的线程数 +- 查询指定的线程是否等待获取此锁定 +- 查询是否有线程等待获取此锁定 +- 查询当前线程是否持有锁定 +- 判断一个锁是不是被线程持有 +- 加锁时如果中断则不加锁,进入异常处理 +- 尝试加锁,如果该锁未被其他线程持有的情况下成功 + +#### 实现公平锁 +在实例化锁对象的时候,构造方法有2个,一个是无参构造方法,一个是传入一个boolean变量的构造方法。当传入值为true的时候,该锁为公平锁。默认不传参数是非公平锁。 +> 公平锁:按照线程加锁的顺序来获取锁 +> 非公平锁:随机竞争来得到锁 +此外,JAVA还提供`isFair()`来判断一个锁是不是公平锁。 + +#### 获取当前线程锁定的个数 +Java提供了`getHoldCount()`方法来获取当前线程的锁定个数。所谓锁定个数就是当前线程调用lock方法的次数。一般一个方法只会调用一个lock方法,但是有可能在同步代码中还有调用了别的方法,那个方法内部有同步代码。这样,`getHoldCount()`返回值就是大于1。 + +**下面的方法用来判断等待锁的情况** + +#### 获取等待锁的线程数 +Java提供了`getQueueLength()`方法来得到等待锁释放的线程的个数。 +#### 查询指定的线程是否等待获取此锁定 +Java提供了`hasQueuedThread(Thread thread)`查询该Thread是否等待该lock对象的释放。 +#### 查询是否有线程等待获取此锁定 +同样,Java提供了一个简单判断是否有线程在等待锁释放即`hasQueuedThreads()`。 + +**下面的方法用来判断持有锁的情况** + +#### 查询当前线程是否持有锁定 +Java不仅提供了判断是否有线程在等待锁释放的方法,还提供了是否当前线程持有锁即`isHeldByCurrentThread()`,判断当前线程是否有此锁定。 +#### 判断一个锁是不是被线程持有 +同样,Java提供了简单判断一个锁是不是被一个线程持有,即`isLocked()` + +**下面的方法用来实现多种方式加锁** + +#### 加锁时如果中断则不加锁,进入异常处理 +Lock类提供了多种选择的加锁方法,`lockInterruptibly()`也可以实现加锁,但是当线程被中断的时候,就会加锁失败,进行异常处理阶段。一般这种情况出现在该线程已经被打上interrupted的标记了。 + +#### 尝试加锁,如果该锁未被其他线程持有的情况下成功 +Java提供了`tryLock()`方法来进行尝试加锁,只有该锁未被其他线程持有的基础上,才会成功加锁。 + +上面介绍了Lock类来实现代码的同步处理,下面介绍Condition类来实现wait/notify机制。 + +## Condition类 +Condition是Java提供了来实现等待/通知的类,Condition类还提供比wait/notify更丰富的功能,Condition对象是由lock对象所创建的。但是同一个锁可以创建多个Condition的对象,即创建多个对象监视器。这样的好处就是可以指定唤醒线程。notify唤醒的线程是随机唤醒一个。 +下面,看一个例子,显示简单的等待/通知 + +``` +public class ConditionWaitNotifyService { + + private Lock lock = new ReentrantLock(); + public Condition condition = lock.newCondition(); + + + public void await(){ + try{ + lock.lock(); + System.out.println("await的时间为 " + System.currentTimeMillis()); + condition.await(); + System.out.println("await结束的时间" + System.currentTimeMillis()); + }catch (Exception e){ + e.printStackTrace(); + }finally { + lock.unlock(); + } + } + + + public void signal(){ + try{ + lock.lock(); + System.out.println("sign的时间为" + System.currentTimeMillis()); + condition.signal(); + }finally { + lock.unlock(); + } + } +} +``` + +测试的代码如下: + +``` + ConditionWaitNotifyService service = new ConditionWaitNotifyService(); + new Thread(service::await).start(); + Thread.sleep(1000 * 3); + service.signal(); + Thread.sleep(1000); +``` + +结果如下: + +``` +await的时间为 1485610107421 +sign的时间为1485610110423 +await结束的时间1485610110423 +``` + +condition对象通过`lock.newCondition()`来创建,用`condition.await()`来实现让线程等待,是线程进入阻塞。用`condition.signal()`来实现唤醒线程。唤醒的线程是用同一个conditon对象调用`await()`方法而进入阻塞。并且和wait/notify一样,await()和signal()也是在同步代码区内执行。 +此外看出await结束的语句是在获取通知之后才执行,确实实现了wait/notify的功能。下面这个例子是展示唤醒制定的线程。 + +``` + ConditionAllService service = new ConditionAllService(); + Thread a = new Thread(service::awaitA); + a.setName("A"); + a.start(); + + Thread b = new Thread(service::awaitB); + b.setName("B"); + b.start(); + + Thread.sleep(1000 * 3); + + service.signAAll(); + + Thread.sleep(1000 * 4); +``` + +结果如下: + +``` +begin awaitA时间为 1485611065974ThreadName=A +begin awaitB时间为 1485611065975ThreadName=B +signAll的时间为1485611068979ThreadName=main +end awaitA时间为1485611068979ThreadName=A +``` + +该结果确实展示用同一个condition对象来实现等待通知。 +对于等待/通知机制,简化而言,就是等待一个条件,当条件不满足时,就进入等待,等条件满足时,就通知等待的线程开始执行。为了实现这种功能,需要进行wait的代码部分与需要进行通知的代码部分必须放在同一个对象监视器里面。执行才能实现多个阻塞的线程同步执行代码,等待与通知的线程也是同步进行。对于wait/notify而言,对象监视器与等待条件结合在一起 即`synchronized(对象)`利用该对象去调用wait以及notify。但是对于Condition类,是对象监视器与条件分开,Lock类来实现对象监视器,condition对象来负责条件,去调用await以及signal。 + +## Condition类的其他功能 +和wait类提供了一个最长等待时间,`awaitUntil(Date deadline)`在到达指定时间之后,线程会自动唤醒。但是无论是await或者awaitUntil,当线程中断时,进行阻塞的线程会产生中断异常。Java提供了一个`awaitUninterruptibly`的方法,使即使线程中断时,进行阻塞的线程也不会产生中断异常。 + +## 读写锁 +Lock类除了提供了`ReentrantLock`的锁以外,还提供了`ReentrantReadWriteLock`的锁。读写锁分成两个锁,一个锁是读锁,一个锁是写锁。读锁与读锁之间是共享的,读锁与写锁之间是互斥的,写锁与写锁之间也是互斥的。 +看下面的读读共享的例子: + +``` +public class ReadReadService { + private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + public void read(){ + try{ + try{ + lock.readLock().lock(); + System.out.println("获得读锁" + Thread.currentThread().getName() + + " " + System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.readLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} +``` + +测试的代码和结果如下: + +``` + ReadReadService service = new ReadReadService(); + Thread a = new Thread(service::read); + a.setName("A"); + + Thread b = new Thread(service::read); + b.setName("B"); + + a.start(); + b.start(); +``` + +结果如下: + +``` +获得读锁A 1485614976979 +获得读锁B 1485614976981 +``` + +两个线程几乎同时执行同步代码。 +下面的例子是写写互斥的例子 + +``` +public class WriteWriteService { + private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + + public void write(){ + try{ + try{ + lock.writeLock().lock(); + System.out.println("获得写锁" + Thread.currentThread().getName() + + " " +System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.writeLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } +} +``` + +测试代码和结果如下: + +``` + WriteWriteService service = new WriteWriteService(); + Thread a = new Thread(service::write); + a.setName("A"); + Thread b = new Thread(service::write); + b.setName("B"); + + a.start(); + b.start(); + Thread.sleep(1000 * 30); +``` + +结果如下: + +``` +获得写锁A 1485615316519 +获得写锁B 1485615326524 +``` + +两个线程同步执行代码 + +读写互斥的例子: + +``` + public class WriteReadService { + + private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + + public void read(){ + try{ + try{ + lock.readLock().lock(); + System.out.println("获得读锁" + Thread.currentThread().getName() + + " " + System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.readLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + + public void write(){ + try{ + try{ + lock.writeLock().lock(); + System.out.println("获得写锁" + Thread.currentThread().getName() + + " " + System.currentTimeMillis()); + Thread.sleep(1000 * 10); + }finally { + lock.writeLock().unlock(); + } + }catch (InterruptedException e){ + e.printStackTrace(); + } + } + +} +``` + +测试的代码如下: + +``` + WriteReadService service = new WriteReadService(); + Thread a = new Thread(service::write); + a.setName("A"); + a.start(); + Thread.sleep(1000); + + Thread b = new Thread(service::read); + b.setName("B"); + b.start(); + + Thread.sleep(1000 * 30); +``` + +结果如下: + +``` +获得写锁A 1485615633790 +获得读锁B 1485615643792 +``` + +两个线程读写之间也是同步执行代码。 + +## 总结 +本文介绍了新的同步代码的方式Lock类以及新的等待/通知机制的实现Condition类。本文只是很简单的介绍了他们的概念和使用的方式。关于Condition以及读写锁还有更多的内容,将放在以后的博客中。 \ No newline at end of file From 51cb871f01b02bc621d8c93113e9fb5a9ea0430f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Thu, 9 Feb 2017 19:11:54 +0800 Subject: [PATCH 047/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../byhieg/collectiontutorial/listtutorial/SimpleArrayList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java index 3d1940f..7ef117a 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java @@ -110,7 +110,7 @@ public int size(){ public boolean isEmpty(){ return size() == 0; } - + public E remove(int index) { E value = get(index); int moveSize = size - index - 1; From 9713fe839c2d89fc8f2a87439b8f23f7f784c4b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 14 Feb 2017 18:12:36 +0800 Subject: [PATCH 048/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E8=A7=A3?= =?UTF-8?q?=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotationstutorial/AConstructor.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/main/java/cn/byhieg/annotationstutorial/AConstructor.java diff --git a/src/main/java/cn/byhieg/annotationstutorial/AConstructor.java b/src/main/java/cn/byhieg/annotationstutorial/AConstructor.java new file mode 100644 index 0000000..05752cc --- /dev/null +++ b/src/main/java/cn/byhieg/annotationstutorial/AConstructor.java @@ -0,0 +1,20 @@ +package cn.byhieg.annotationstutorial; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Created by byhieg on 17/2/14. + * Mail to byhieg@gmail.com + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.CONSTRUCTOR) +public @interface AConstructor { + + public String initName() default "byhieg"; + + public int initAge() default 24; + +} From cac662ae3c8fdaf3862a84470693340b775aa8d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 14 Feb 2017 19:53:18 +0800 Subject: [PATCH 049/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E6=97=B6=E6=B3=A8=E8=A7=A3=E5=A4=84=E7=90=86=E5=99=A8=E7=9A=84?= =?UTF-8?q?=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AConstructorProcess.java | 31 +++++++++++++++++ .../byhieg/annotationstutorial/AMethod.java | 18 ++++++++++ .../annotationstutorial/AMethodProcess.java | 34 +++++++++++++++++++ .../cn/byhieg/annotationstutorial/User.java | 27 +++++++++++++++ .../AConstructorProcessTest.java | 18 ++++++++++ .../AMethodProcessTest.java | 16 +++++++++ 6 files changed, 144 insertions(+) create mode 100644 src/main/java/cn/byhieg/annotationstutorial/AConstructorProcess.java create mode 100644 src/main/java/cn/byhieg/annotationstutorial/AMethod.java create mode 100644 src/main/java/cn/byhieg/annotationstutorial/AMethodProcess.java create mode 100644 src/main/java/cn/byhieg/annotationstutorial/User.java create mode 100644 src/test/java/cn/byhieg/annotationstutorialtest/AConstructorProcessTest.java create mode 100644 src/test/java/cn/byhieg/annotationstutorialtest/AMethodProcessTest.java diff --git a/src/main/java/cn/byhieg/annotationstutorial/AConstructorProcess.java b/src/main/java/cn/byhieg/annotationstutorial/AConstructorProcess.java new file mode 100644 index 0000000..7f182f5 --- /dev/null +++ b/src/main/java/cn/byhieg/annotationstutorial/AConstructorProcess.java @@ -0,0 +1,31 @@ +package cn.byhieg.annotationstutorial; + +import javax.jws.soap.SOAPBinding; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; + +/** + * Created by byhieg on 17/2/14. + * Mail to byhieg@gmail.com + */ +public class AConstructorProcess { + + public static void init(Object object) throws IllegalAccessException, InvocationTargetException, InstantiationException { + if (object instanceof User) { + Class clz = object.getClass(); + Constructor [] constructors = clz.getConstructors(); + for (Constructor constructor : constructors) { + if (constructor.isAnnotationPresent(AConstructor.class)) { + AConstructor aConstructor = (AConstructor) constructor.getAnnotation(AConstructor.class); + String name = aConstructor.initName(); + int age = aConstructor.initAge(); + ((User) object).name = name; + ((User) object).age = age; + } + } + }else{ + throw new RuntimeException("无法向下转型到指定类"); + } + + } +} diff --git a/src/main/java/cn/byhieg/annotationstutorial/AMethod.java b/src/main/java/cn/byhieg/annotationstutorial/AMethod.java new file mode 100644 index 0000000..2a73b74 --- /dev/null +++ b/src/main/java/cn/byhieg/annotationstutorial/AMethod.java @@ -0,0 +1,18 @@ +package cn.byhieg.annotationstutorial; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Created by byhieg on 17/2/14. + * Mail to byhieg@gmail.com + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface AMethod { + public String method(); + + public String value(); +} diff --git a/src/main/java/cn/byhieg/annotationstutorial/AMethodProcess.java b/src/main/java/cn/byhieg/annotationstutorial/AMethodProcess.java new file mode 100644 index 0000000..360ba46 --- /dev/null +++ b/src/main/java/cn/byhieg/annotationstutorial/AMethodProcess.java @@ -0,0 +1,34 @@ +package cn.byhieg.annotationstutorial; + +import sun.jvm.hotspot.runtime.amd64.AMD64CurrentFrameGuess; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; + +/** + * Created by byhieg on 17/2/14. + * Mail to byhieg@gmail.com + */ +public class AMethodProcess { + + public static void initMethod(Object object) throws InvocationTargetException, IllegalAccessException { + if (object instanceof User) { + Class clz = object.getClass(); + Method [] methods = clz.getDeclaredMethods(); + for (Method method : methods) { + if (method.isAnnotationPresent(AMethod.class)) { + if(Modifier.isPrivate(method.getModifiers())){ + method.setAccessible(true); + }else { + AMethod aMethod = method.getAnnotation(AMethod.class); + System.out.println(aMethod.method() + "时间为 " + aMethod.value()); + method.invoke(object); + } + } + } + }else { + throw new RuntimeException("无法向下转型成指定类"); + } + } +} diff --git a/src/main/java/cn/byhieg/annotationstutorial/User.java b/src/main/java/cn/byhieg/annotationstutorial/User.java new file mode 100644 index 0000000..bfa28e9 --- /dev/null +++ b/src/main/java/cn/byhieg/annotationstutorial/User.java @@ -0,0 +1,27 @@ +package cn.byhieg.annotationstutorial; + +/** + * Created by byhieg on 17/2/14. + * Mail to byhieg@gmail.com + */ +public class User { + + public String name; + public int age; + + @AConstructor + public User(){ + + } + + @Override + public String toString() { + return "名字是 " + name + "年龄是 " + age; + } + + @AMethod(method = "Sleep",value = "60m") + public void doSomeThing(){ + System.out.println("做一些事情"); + } + +} diff --git a/src/test/java/cn/byhieg/annotationstutorialtest/AConstructorProcessTest.java b/src/test/java/cn/byhieg/annotationstutorialtest/AConstructorProcessTest.java new file mode 100644 index 0000000..74c7b6b --- /dev/null +++ b/src/test/java/cn/byhieg/annotationstutorialtest/AConstructorProcessTest.java @@ -0,0 +1,18 @@ +package cn.byhieg.annotationstutorialtest; + +import cn.byhieg.annotationstutorial.AConstructorProcess; +import cn.byhieg.annotationstutorial.User; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/2/14. + * Mail to byhieg@gmail.com + */ +public class AConstructorProcessTest extends TestCase { + public void testInit() throws Exception { + User user = new User(); + AConstructorProcess.init(user); + System.out.println(user.toString()); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/annotationstutorialtest/AMethodProcessTest.java b/src/test/java/cn/byhieg/annotationstutorialtest/AMethodProcessTest.java new file mode 100644 index 0000000..281d968 --- /dev/null +++ b/src/test/java/cn/byhieg/annotationstutorialtest/AMethodProcessTest.java @@ -0,0 +1,16 @@ +package cn.byhieg.annotationstutorialtest; + +import cn.byhieg.annotationstutorial.AMethodProcess; +import cn.byhieg.annotationstutorial.User; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/2/14. + * Mail to byhieg@gmail.com + */ +public class AMethodProcessTest extends TestCase { + public void testInitMethod() throws Exception { + AMethodProcess.initMethod(new User()); + } + +} \ No newline at end of file From e50a35ccae6cf318c48b1d461ebcc3742d3c6ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 14 Feb 2017 21:16:22 +0800 Subject: [PATCH 050/118] =?UTF-8?q?=E5=AE=8C=E6=88=90APT=20=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=97=B6=E6=B3=A8=E8=A7=A3=E7=9A=84=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotationstutorial/APTAnnotation.java | 21 ++++ .../annotationstutorial/APTProcessor.java | 109 ++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 src/main/java/cn/byhieg/annotationstutorial/APTAnnotation.java create mode 100644 src/main/java/cn/byhieg/annotationstutorial/APTProcessor.java diff --git a/src/main/java/cn/byhieg/annotationstutorial/APTAnnotation.java b/src/main/java/cn/byhieg/annotationstutorial/APTAnnotation.java new file mode 100644 index 0000000..e9e9458 --- /dev/null +++ b/src/main/java/cn/byhieg/annotationstutorial/APTAnnotation.java @@ -0,0 +1,21 @@ +package cn.byhieg.annotationstutorial; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Created by byhieg on 17/2/14. + * Mail to byhieg@gmail.com + */ + +@Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD}) +@Retention(RetentionPolicy.SOURCE) +public @interface APTAnnotation { + String author() default "byhieg"; + + String date(); + + String version() default "1"; +} diff --git a/src/main/java/cn/byhieg/annotationstutorial/APTProcessor.java b/src/main/java/cn/byhieg/annotationstutorial/APTProcessor.java new file mode 100644 index 0000000..de6707e --- /dev/null +++ b/src/main/java/cn/byhieg/annotationstutorial/APTProcessor.java @@ -0,0 +1,109 @@ +package cn.byhieg.annotationstutorial; + +import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.Messager; +import javax.annotation.processing.ProcessingEnvironment; +import javax.annotation.processing.RoundEnvironment; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.Element; +import javax.lang.model.element.PackageElement; +import javax.lang.model.element.TypeElement; +import javax.tools.Diagnostic; +import javax.tools.JavaFileObject; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.Writer; +import java.util.Set; + +/** + * Created by byhieg on 17/2/14. + * Mail to byhieg@gmail.com + */ +public class APTProcessor extends AbstractProcessor{ + + //类名的前缀、后缀 + public static final String SUFFIX = "AutoGenerate"; + public static final String PREFIX = "byhieg_"; + + @Override + public boolean process(Set annotations, RoundEnvironment roundEnv) { + for (TypeElement typeElement : annotations) { + for (Element e : roundEnv.getElementsAnnotatedWith(typeElement)) { + //打印消息 + Messager messager = processingEnv.getMessager(); + messager.printMessage(Diagnostic.Kind.NOTE, "Printing:" + e.toString()); + messager.printMessage(Diagnostic.Kind.NOTE, "Printing:" + e.getSimpleName()); + messager.printMessage(Diagnostic.Kind.NOTE, "Printing:" + e.getEnclosedElements().toString()); + + //获取注解 + APTAnnotation aptAnnotation = e.getAnnotation(APTAnnotation.class); + + //获取元素名并将其首字母大写 + String name = e.getSimpleName().toString(); + char c = Character.toUpperCase(name.charAt(0)); + name = String.valueOf(c + name.substring(1)); + + //包裹注解元素的元素, 也就是其父元素, 比如注解了成员变量或者成员函数, 其上层就是该类 + Element enclosingElement = e.getEnclosingElement(); + String enclosingQualifiedname; + if (enclosingElement instanceof PackageElement) { + enclosingQualifiedname = ((PackageElement) enclosingElement).getQualifiedName().toString(); + } else { + enclosingQualifiedname = ((TypeElement) enclosingElement).getQualifiedName().toString(); + } + try { + //生成包名 + String generatePackageName = enclosingQualifiedname.substring(0, enclosingQualifiedname.lastIndexOf(".")); + + // 生成的类名 + String genarateClassName = PREFIX + enclosingElement.getSimpleName() + SUFFIX; + + //创建Java 文件 + JavaFileObject f = processingEnv.getFiler().createSourceFile(genarateClassName); + + // 在控制台输出文件路径 + messager.printMessage(Diagnostic.Kind.NOTE, "Printing: " + f.toUri()); + Writer w = f.openWriter(); + try { + PrintWriter pw = new PrintWriter(w); + pw.println("package " + generatePackageName + ";"); + pw.println("\npublic class " + genarateClassName + " { "); + pw.println("\n /** 打印值 */"); + pw.println(" public static void print" + name + "() {"); + pw.println(" // 注解的父元素: " + enclosingElement.toString()); + pw.println(" System.out.println(\"代码生成的路径: " + f.toUri() + "\");"); + pw.println(" System.out.println(\"注解的元素: " + e.toString() + "\");"); + pw.println(" System.out.println(\"注解的版本: " + aptAnnotation.version() + "\");"); + pw.println(" System.out.println(\"注解的作者: " + aptAnnotation.author() + "\");"); + pw.println(" System.out.println(\"注解的日期: " + aptAnnotation.date() + "\");"); + + pw.println(" }"); + pw.println("}"); + pw.flush(); + } finally { + w.close(); + } + } catch (IOException e1) { + processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, e1.toString()); + } + } + } + return true; + } + + + @Override + public Set getSupportedAnnotationTypes() { + return super.getSupportedAnnotationTypes(); + } + + @Override + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latestSupported(); + } + + @Override + public synchronized void init(ProcessingEnvironment processingEnv) { + super.init(processingEnv); + } +} From 0a36bc6146619239cd6d73702ae9e0f98f1b4df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 14 Feb 2017 21:56:17 +0800 Subject: [PATCH 051/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/byhieg/annotationstutorial/ReadMe.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/cn/byhieg/annotationstutorial/ReadMe.md diff --git a/src/main/java/cn/byhieg/annotationstutorial/ReadMe.md b/src/main/java/cn/byhieg/annotationstutorial/ReadMe.md new file mode 100644 index 0000000..d01329d --- /dev/null +++ b/src/main/java/cn/byhieg/annotationstutorial/ReadMe.md @@ -0,0 +1,14 @@ +# Java 注解 + +Java注解是Java1.5以后提供用来标注类,变量,方法等,其目的在于给这些类,变量,方法提供形式化的信息。 +注解的写法和用法都是大同小异,一个格式,因此这篇注解的主要内容,是提供一些比较好的注解方面的文章。 + +在[源码](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/annotationstutorial)中提供了构造器和方法的运行时注解和一个APT编译前注解的例子。 + +注解相关的文章: + +- [注解的讲解](http://blog.csdn.net/dd864140130/article/details/53875814) +- [APT的讲解](https://github.com/OriginalLove/JavaAdvanced/blob/master/Java%E6%B3%A8%E8%A7%A3%E4%BA%8C.md) + + + From 0aa78f5fb8f8780c734859e2f2532b91dc0ee18c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 14 Feb 2017 22:04:49 +0800 Subject: [PATCH 052/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9ReadMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +++ .../JavaTutorial\347\233\256\345\275\225.jpg" | Bin 152103 -> 137460 bytes 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index edcbb39..c107722 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,9 @@ listtutorial中的知识点有 - 实现一个简单的ArrayList +## AnnotationTutorial内容说明 + +在源码路径下`cn.byhieg.annotationtutorial`中放置的是Java注解类的代码和测试例子。在每一个包里面,都有一个ReadMe来说明该章的知识点。 diff --git "a/images/JavaTutorial\347\233\256\345\275\225.jpg" "b/images/JavaTutorial\347\233\256\345\275\225.jpg" index 522ab08cfda248da267fd1910787365ef6b284f4..e60e0c16ae55baef272a48712df2d1b59b9ac526 100644 GIT binary patch literal 137460 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 E7p?Uz0{{R3 From f6ec735a3459dcbdd24ad56ba347dcbb8ba61cb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 15 Feb 2017 10:59:28 +0800 Subject: [PATCH 053/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=9A=84SimpleLinkedList=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listtutorial/LinkedListDemo.java | 20 +++++++++++++ .../listtutorial/SimpleLinkedList.java | 28 +++++++++++++++++++ .../LinkedListDemoTest.java | 19 +++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 src/main/java/cn/byhieg/collectiontutorial/listtutorial/LinkedListDemo.java create mode 100644 src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java create mode 100644 src/test/java/cn/byhieg/collectiontutorialtest/LinkedListDemoTest.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/LinkedListDemo.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/LinkedListDemo.java new file mode 100644 index 0000000..8ed9d9a --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/LinkedListDemo.java @@ -0,0 +1,20 @@ +package cn.byhieg.collectiontutorial.listtutorial; + +import java.util.LinkedList; + +/** + * Created by byhieg on 17/2/15. + * Mail to byhieg@gmail.com + */ +public class LinkedListDemo { + + private LinkedList list = new LinkedList(); + + public LinkedList getList() { + return list; + } + + public void setList(LinkedList list) { + this.list = list; + } +} diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java new file mode 100644 index 0000000..884b354 --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java @@ -0,0 +1,28 @@ +package cn.byhieg.collectiontutorial.listtutorial; + +/** + * Created by byhieg on 17/2/15. + * Mail to byhieg@gmail.com + */ +public class SimpleLinkedList { + + private int size; + + private Node first; + + private Node last; + + + private static class Node{ + E item; + Node next; + Node prev; + + public Node(E item, Node next, Node prev) { + this.item = item; + this.next = next; + this.prev = prev; + + } + } +} diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/LinkedListDemoTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/LinkedListDemoTest.java new file mode 100644 index 0000000..290f22a --- /dev/null +++ b/src/test/java/cn/byhieg/collectiontutorialtest/LinkedListDemoTest.java @@ -0,0 +1,19 @@ +package cn.byhieg.collectiontutorialtest; + +import cn.byhieg.collectiontutorial.listtutorial.LinkedListDemo; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/2/15. + * Mail to byhieg@gmail.com + */ +public class LinkedListDemoTest extends TestCase { + + public void testList() throws Exception { + LinkedListDemo demo = new LinkedListDemo(); + demo.getList().add(111); + System.out.println(demo.getList().get(0)); + demo.getList().remove(0); + } + +} \ No newline at end of file From cc5b79b9756146933089a9aae7a4a4aac27d7a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 15 Feb 2017 13:43:39 +0800 Subject: [PATCH 054/118] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86SimpleLinked?= =?UTF-8?q?List=E7=9A=84add=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listtutorial/SimpleLinkedList.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java index 884b354..ab6f913 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java @@ -1,5 +1,7 @@ package cn.byhieg.collectiontutorial.listtutorial; +import apple.laf.JRSUIFocus; + /** * Created by byhieg on 17/2/15. * Mail to byhieg@gmail.com @@ -13,6 +15,69 @@ public class SimpleLinkedList { private Node last; + + public boolean add(E element) { + addAtLast(element); + return true; + } + + private void addAtLast(E element){ + Node l = last; + Node node = new Node(element,null,l); + last = node; + if (l == null) { + first = node; + }else { + l.next = node; + } + size++; + } + + public void add(int index, E element) { + checkRangeForAdd(index); + if (index == size){ + addAtLast(element); + }else{ + Node l = node(index); + addBeforeNode(element,l); + } + } + + private void addBeforeNode(E element,Node specifiedNode){ + Node preNode = specifiedNode.prev; + Node newNode = new Node<>(element, specifiedNode,preNode); + if (preNode == null) { + first.next = newNode; + }else { + preNode.next = newNode; + } + specifiedNode.prev = newNode; + size ++; + } + + + private Node node(int index){ + if (index < (size<<1)){ + Node cursor = first; + for (int i = 0 ; i < index ; i++) { + cursor = cursor.next; + } + return cursor; + }else { + Node cursor = last; + for (int i = size -1 ; i > index ; i--) { + cursor = cursor.prev; + } + return cursor; + } + } + + private void checkRangeForAdd(int index){ + if (index > size || index < 0) { + throw new IndexOutOfBoundsException("指定的index超过界限"); + } + } + private static class Node{ E item; Node next; From b67988e79d994d1c7de2aa7b43bfe77dddcd7f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 15 Feb 2017 13:46:59 +0800 Subject: [PATCH 055/118] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listtutorial/SimpleLinkedList.java | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java index ab6f913..a4f6eea 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java @@ -15,19 +15,18 @@ public class SimpleLinkedList { private Node last; - public boolean add(E element) { - addAtLast(element); + addAtLast(element); return true; } - private void addAtLast(E element){ + private void addAtLast(E element) { Node l = last; - Node node = new Node(element,null,l); + Node node = new Node(element, null, l); last = node; if (l == null) { first = node; - }else { + } else { l.next = node; } size++; @@ -35,50 +34,50 @@ private void addAtLast(E element){ public void add(int index, E element) { checkRangeForAdd(index); - if (index == size){ + if (index == size) { addAtLast(element); - }else{ + } else { Node l = node(index); - addBeforeNode(element,l); + addBeforeNode(element, l); } } - private void addBeforeNode(E element,Node specifiedNode){ + private void addBeforeNode(E element, Node specifiedNode) { Node preNode = specifiedNode.prev; - Node newNode = new Node<>(element, specifiedNode,preNode); + Node newNode = new Node<>(element, specifiedNode, preNode); if (preNode == null) { first.next = newNode; - }else { + } else { preNode.next = newNode; } specifiedNode.prev = newNode; - size ++; + size++; } - private Node node(int index){ - if (index < (size<<1)){ - Node cursor = first; - for (int i = 0 ; i < index ; i++) { + private Node node(int index) { + if (index < (size << 1)) { + Node cursor = first; + for (int i = 0; i < index; i++) { cursor = cursor.next; } return cursor; - }else { + } else { Node cursor = last; - for (int i = size -1 ; i > index ; i--) { + for (int i = size - 1; i > index; i--) { cursor = cursor.prev; } return cursor; } } - private void checkRangeForAdd(int index){ + private void checkRangeForAdd(int index) { if (index > size || index < 0) { throw new IndexOutOfBoundsException("指定的index超过界限"); } } - private static class Node{ + private static class Node { E item; Node next; Node prev; From f803b81486fb50a3107d8aab573bd24ebb1a358c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 15 Feb 2017 14:21:12 +0800 Subject: [PATCH 056/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9add=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=B5=8B=E8=AF=95=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listtutorial/SimpleLinkedList.java | 4 ++-- .../SimpleLinkedListTest.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java index a4f6eea..993feed 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java @@ -22,7 +22,7 @@ public boolean add(E element) { private void addAtLast(E element) { Node l = last; - Node node = new Node(element, null, l); + Node node = new Node<>(element, null, l); last = node; if (l == null) { first = node; @@ -46,7 +46,7 @@ private void addBeforeNode(E element, Node specifiedNode) { Node preNode = specifiedNode.prev; Node newNode = new Node<>(element, specifiedNode, preNode); if (preNode == null) { - first.next = newNode; + first = newNode; } else { preNode.next = newNode; } diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java new file mode 100644 index 0000000..7d778db --- /dev/null +++ b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java @@ -0,0 +1,19 @@ +package cn.byhieg.collectiontutorialtest; + +import cn.byhieg.collectiontutorial.listtutorial.SimpleArrayList; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/2/15. + * Mail to byhieg@gmail.com + */ +public class SimpleLinkedListTest extends TestCase { + public void testAdd() throws Exception { + new SimpleArrayList().add(11111); + } + + public void testAdd1() throws Exception { + new SimpleArrayList().add(0,10); + } + +} \ No newline at end of file From 5d48bfee4ba86013bc446b9f842326c19ba5863d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 15 Feb 2017 14:51:37 +0800 Subject: [PATCH 057/118] =?UTF-8?q?=E5=AE=9E=E7=8E=B0indexOf=E4=B8=8Eget?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listtutorial/SimpleLinkedList.java | 30 +++++++++++++++++++ .../SimpleLinkedListTest.java | 15 ++++++++++ 2 files changed, 45 insertions(+) diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java index 993feed..33e86b7 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java @@ -77,6 +77,36 @@ private void checkRangeForAdd(int index) { } } + public E get(int index) { + checkRange(index); + return node(index).item; + } + + private void checkRange(int index) { + if (index >= size || index < 0) { + throw new IndexOutOfBoundsException("指定index超过界限"); + } + } + + public int indexOf(Object element) { + Node cursor = first; + int count = 0; + while (cursor != null) { + if (element != null) { + if (element.equals(cursor.item)) { + return count; + } + }else{ + if (cursor.item == null) { + return count; + } + } + count ++; + cursor = cursor.next; + } + return -1; + } + private static class Node { E item; Node next; diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java index 7d778db..b51077e 100644 --- a/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java +++ b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java @@ -1,8 +1,11 @@ package cn.byhieg.collectiontutorialtest; import cn.byhieg.collectiontutorial.listtutorial.SimpleArrayList; +import cn.byhieg.collectiontutorial.listtutorial.SimpleLinkedList; import junit.framework.TestCase; +import java.net.SocketImpl; + /** * Created by byhieg on 17/2/15. * Mail to byhieg@gmail.com @@ -16,4 +19,16 @@ public void testAdd1() throws Exception { new SimpleArrayList().add(0,10); } + public void testGet() throws Exception { + SimpleLinkedList lists = new SimpleLinkedList<>(); + lists.add("byhieg"); + System.out.println(lists.get(0)); + } + + public void testIndexOf() throws Exception { + SimpleLinkedList lists = new SimpleLinkedList<>(); + lists.add(1); + System.out.println(lists.indexOf(1)); + } + } \ No newline at end of file From 7e3e66c78bf1eaa0f916afb67e259a8fc7b8b863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Wed, 15 Feb 2017 16:05:21 +0800 Subject: [PATCH 058/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9README=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E5=AE=8C=E6=88=90remove=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collectiontutorial/listtutorial/README.md | 281 ++++++++++++++++++ .../listtutorial/SimpleLinkedList.java | 43 +++ .../SimpleLinkedListTest.java | 12 + 3 files changed, 336 insertions(+) diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/README.md b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/README.md index e14f77e..a4a1f5a 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/README.md +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/README.md @@ -1,3 +1,7 @@ +# 自动动手系列——实现List +该包代码 主要实现了ArrayList与LinkedList。该README对应介绍实现的内容与过程。下面分别是ArrayList与LinkedList实现 +其ArrayList实现的内容和过程如下: + # 自己动手系列——实现一个简单的ArrayList ArrayList是Java集合框架中一个经典的实现类。他比起常用的数组而言,明显的优点在于,可以随意的添加和删除元素而不需考虑数组的大小。处于练手的目的,实现一个简单的ArrayList,并且把实现的过程在此记录。 实现的ArrayList主要的功能如下: @@ -209,4 +213,281 @@ remove(Object o)和remove(int index) ## 总结 自此,一个简单的ArrayList就实现完了,实现的目的是为了弄清ArrayList动态数组的原理以及add与remove方法的内容实现。同时,也清楚了ArrayList最大的扩容空间就是Integer的最大值。该类的所有代码在[SimpleArrayList代码](https://github.com/byhieg/JavaTutorial/tree/master/src/main/java/cn/byhieg/collectiontutorial/listtutorial) +# 自己动手系列——实现一个简单的LinkedList + +LinkedList与ArrayList都是List接口的具体实现类。LinkedList与ArrayList在功能上也是大体一致,但是因为两者具体的实现方式不一致,所以在进行一些相同操作的时候,其效率也是有差别的。 +对于抽象的数据结构——线性表而言,线性表分为两种,一种是顺序存储结构的顺序表,另一种是通过指针来描述其逻辑位置的链表。 +针对于具体的Java实现: + +- 顺序存储的顺序表是用数组来实现的,以数组为基础进行封装各种操作而形成的List为ArrayList +- 链表是用指针来描述其逻辑位置,在Java中以双向链表为基础进行封装各种操作而形成的List为LinkedList + +针对插入与删除操作,ArrayList每插入一个元素,首先需要判断数组的空间够不够,不够要进行扩容,在有足够的空间的基础上,在指定的index位置上插入元素,但是该index及以后的元素都要后移。虽然删除操作不需要判断空间够不够,但同样需要该index及以后的元素向前移动,这些移动的操作会增加时间的复杂度。但是对于LinkedList就不一样,因为使用指针来指示其逻辑的位置,所以插入与删除的操作的时间复杂度都是 ** O(1) ** + +虽然对于ArrayList而言,插入与删除的时间复杂度很高,但是对于查找指定位置的元素这种操作而言,就非常的快,因为可以通过数组直接得到该下标对应的元素。反而,LinkedList而言,无法直接返回指定位置的元素,需要一个个查询,其时间的复杂度就是 ** O(n) ** + +与实现[ArrayList教程](http://www.cnblogs.com/qifengshi/p/6377614.html)一样,实现的目的主要在于练手以及掌握官方实现的原理和一些技巧,因此很多需要与其他类配合的方法和功能,就先不在这里实现如`iterator`等 + +所以,实现的LinkedList的方法如下: + +- add方法 +- get方法 +- indexOf方法 +- remove方法 + +与实现ArrayList的名字一样,为SimpleLinkedList。[源码地址](https://github.com/byhieg/JavaTutorial/blob/master/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java),欢迎star,fork + + +## 构建一个双向链表 + +构建的代码如下: + +``` + + private static class Node{ + E item; + Node next; + Node prev; + + public Node(E item, Node next, Node prev) { + this.item = item; + this.next = next; + this.prev = prev; + } + } + +``` + +常规的双向链表的构建方法,一个数字域存放数组,一个前指针指向一个Node类型的元素,一个后指针指向一个Node类型的元素。 + +对于LinkedList的实现而言,还需要以下三个成员变量 + +``` + + private int size; + + private Node first; + + private Node last; + +``` + +## Add方法 +这里实现的add方法是简单的add(E e)以及add(int index,E e)两个方法,addAll()将其他集合转换LinkedList的方法,暂时放到以后去实现。 + +add方法两个重载方法,其分别对应不同的添加方式。先说add(E e)方法的实现。 + +``` + + public boolean add(E element) { + addAtLast(element); + return true; + } + +``` +不指定位置添加元素,则默认添加到了链表的最后。addAtLast的核心代码如下: + +``` + + private void addAtLast(E element) { + Node l = last; + Node node = new Node(element, null, l); + last = node; + if (l == null) { + first = node; + } else { + l.next = node; + } + size++; + } + +``` + +首先找到最后一位的Node元素,然后根据`element`创建一个新的Node元素,其next指向为null,prev指向为最后一位Node元素。在创建完Node元素之后,last就变成了先创建的Node元素,接下来只需要把新node元素加到链表中即可。即让l对象(原最后一位,现倒数第二位元素的next指针,指向新node元素)。至此,新node元素的next指向null,prev指向倒数第二个元素,倒数第二个元素的next指向新node,就将node成功加入链表。 + +上述的操作也可以看出,其插入的操作非常省时间,比起ArrayList,扩容,移动元素快很多。 + +add的第二个重载方法 add(int index ,E e),先看代码实现: + +``` + + public void add(int index, E element) { + checkRangeForAdd(index); + if (index == size) { + addAtLast(element); + } else { + Node l = node(index); + addBeforeNode(element, l); + } + } + +``` + +首先判断要插入的index是否在范围内,在的话,再执行后续的add操作。如果要插入的index刚好是最后一位,则执行上面讲的addAtLast,如果不是,则得到index所对应的Node元素,执行addBeforeNode。 +获取index所对应的Node元素,是node方法,代码如下: + +``` + + private Node node(int index) { + if (index < (size << 1)) { + Node cursor = first; + for (int i = 0; i < index; i++) { + cursor = cursor.next; + } + return cursor; + } else { + Node cursor = last; + for (int i = size - 1; i > index; i--) { + cursor = cursor.prev; + } + return cursor; + } + } + +``` +这里的查找采用二分查找,节省查找时间,而且也应用到了双向链表的特点。首先判断index在前一半的范围内,还是后一半的范围内。如果是前一半,则游标Node初始为first,用游标Node元素的next,不断指向index所在的元素。如果是后一半,则游标Node初始为last,用游标Node元素的prev,不断指向index所在的元素。 + +在指定元素的前面插入新节点的addBeforeNode的方法如下: + +``` + + private void addBeforeNode(E element, Node specifiedNode) { + Node preNode = specifiedNode.prev; + Node newNode = new Node<>(element, specifiedNode, preNode); + if (preNode == null) { + first = newNode; + } else { + preNode.next = newNode; + } + specifiedNode.prev = newNode; + size++; + } + +``` + +插入的方式很简单,新节点的prev是原index元素的prev,新节点的next是原index元素。剩下的操作是把该node放到链表中,让原index元素的prev的next为新节点,但是要判断preNode是不是空,是的话,表示newNode为第一个元素,就是first。 + +至此,一个add方法,就实现完了。 + +## get方法 + +get方法在有了上述node方法之后,就非常的简单。代码如下: + +``` + public E get(int index) { + checkRange(index); + return node(index).item; + } + +``` + +checkRange检查index是否不在范围内。 + +``` + private void checkRange(int index) { + if (index >= size || index < 0) { + throw new IndexOutOfBoundsException("指定index超过界限"); + } + } + +``` + +## indexOf方法 + +indexOf(Object o)用来得到指定元素的下标。 + +``` + + public int indexOf(Object element) { + Node cursor = first; + int count = 0; + while (cursor != null) { + if (element != null) { + if (element.equals(cursor.item)) { + return count; + } + }else{ + if (cursor.item == null) { + return count; + } + } + count ++; + cursor = cursor.next; + } + return -1; + } + + +``` +与ArrayList一样,从第一位开始查找,首先先判断element是不是null,分成两种情况。 + +## remove方法 +remove方法与add方法一样,同样有两个重载的方法,remove(Object o)与remove(int index) + +先看简单的remove(int index)方法,代码如下: + +``` + + public E remove(int index) { + checkRange(index); + return deleteLink(index); + } + +``` + +deleteLink是将该index所对应的节点的链接删除的方法,其代码如下: + +``` + + private E deleteLink(int index) { + Node l = node(index); + E item = l.item; + Node prevNode = l.prev; + Node nextNode = l.next; + + if (prevNode == null) { + first = nextNode; + }else{ + prevNode.next = nextNode; + l.next = null; + } + + if (nextNode == null) { + last = prevNode; + }else{ + nextNode.prev = prevNode; + l.prev = null; + } + size--; + l.item = null; + return item; + } + +``` + +首先获得该index对应的Node元素,得到该Node元素的前一个元素和后一个元素。接下来,只需要将前一个元素和后一个元素直接相连即可,其他只需要额外判断前一个元素和后一个元素是否为null就行。在判断前一个元素是否为null的时候,只需要操作前一个元素,在判断后一个元素是否为null的时候,也只需要操作后一个元素。最后,将要删除的元素各个引用至为null。 + +remove另一个重载方法remove(Object o),在实现了indexOf和deleteLink方法之后,就非常简单。 + +``` + + public boolean remove(Object o) { + int index = indexOf(o); + if (index < 0){ + return false; + } + deleteLink(index); + return true; + } + +``` + +获取该元素对应对应的下标,然后执行deleteLink方法,完成remove操作。 + +## 总结 +至此,一个功能简单的LinkedList就实现完成了,全部的代码可以看[源码地址](https://github.com/byhieg/JavaTutorial/blob/master/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java),欢迎star,fork。 + + + + diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java index 33e86b7..e7533a1 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java @@ -107,6 +107,49 @@ public int indexOf(Object element) { return -1; } + public E remove(int index) { + checkRange(index); + return deleteLink(index); + } + + public boolean remove(Object o) { + int index = indexOf(o); + if (index < 0){ + return false; + } + deleteLink(index); + return true; + } + + private E deleteLink(int index) { + Node l = node(index); + E item = l.item; + Node prevNode = l.prev; + Node nextNode = l.next; + + if (prevNode == null) { + first = nextNode; + }else{ + prevNode.next = nextNode; + l.next = null; + } + + if (nextNode == null) { + last = prevNode; + }else{ + nextNode.prev = prevNode; + l.prev = null; + } + size--; + l.item = null; + return item; + } + + + + public int size(){ + return size; + } private static class Node { E item; Node next; diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java index b51077e..ba9ad9f 100644 --- a/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java +++ b/src/test/java/cn/byhieg/collectiontutorialtest/SimpleLinkedListTest.java @@ -31,4 +31,16 @@ public void testIndexOf() throws Exception { System.out.println(lists.indexOf(1)); } + public void testRemove() throws Exception { + SimpleLinkedList lists = new SimpleLinkedList<>(); + lists.add(111); + lists.add(1231); + lists.add(1513); + for (int i = 0 ; i < lists.size();i++) { + System.out.println(lists.get(i)); + } + + lists.remove(1); + System.out.println(lists.get(1)); + } } \ No newline at end of file From e4ab0578f1750439e3937e18a3c64edc950fd961 Mon Sep 17 00:00:00 2001 From: byhieg Date: Thu, 16 Feb 2017 11:06:56 +0800 Subject: [PATCH 059/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9SimpleArrayList?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collectiontutorial/listtutorial/SimpleArrayList.java | 2 +- .../threadtutorialtest/char03test/ServiceThreadTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java index 7ef117a..0335a6c 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleArrayList.java @@ -84,7 +84,7 @@ public E get(int index){ public int indexOf(Object o){ if (o != null) { for (int i = 0 ; i < size ; i++){ - if (elementData[i].equals(0)){ + if (o.equals(elementData[i])){ return i; } } diff --git a/src/test/java/cn/byhieg/threadtutorialtest/char03test/ServiceThreadTest.java b/src/test/java/cn/byhieg/threadtutorialtest/char03test/ServiceThreadTest.java index 3735065..29267ad 100644 --- a/src/test/java/cn/byhieg/threadtutorialtest/char03test/ServiceThreadTest.java +++ b/src/test/java/cn/byhieg/threadtutorialtest/char03test/ServiceThreadTest.java @@ -13,6 +13,12 @@ public void testRun() throws Exception { Object lock = new Object(); new ServiceThread(lock).start(); new ServiceThread(lock).start(); + new Thread(new Runnable() { + @Override + public void run() { + System.out.println("aaa"); + } + }).start(); Thread.sleep(1000 * 4); } From 6ad35e5a2bcc67ca478231479157ff867cf8c9f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Tue, 21 Feb 2017 23:52:28 +0800 Subject: [PATCH 060/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0io=E5=86=85=E5=AE=B9?= =?UTF-8?q?=EF=BC=8CByteArrayInputStream?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ByteArrayInputStreamExample.java | 50 +++++++++++++++++++ .../iotutorial/bytestreamio/read_file.txt | 5 ++ .../ByteArrayInputStreamExampleTest.java | 25 ++++++++++ 3 files changed, 80 insertions(+) create mode 100644 src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayInputStreamExample.java create mode 100644 src/main/java/cn/byhieg/iotutorial/bytestreamio/read_file.txt create mode 100644 src/test/java/cn/byhieg/iotutorialtest/ByteArrayInputStreamExampleTest.java diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayInputStreamExample.java b/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayInputStreamExample.java new file mode 100644 index 0000000..621d110 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayInputStreamExample.java @@ -0,0 +1,50 @@ +package cn.byhieg.iotutorial.bytestreamio; + +import java.io.ByteArrayInputStream; +import java.io.File; + +/** + * Created by byhieg on 17/2/21. + * Mail to byhieg@gmail.com + */ +public class ByteArrayInputStreamExample { + + public String readFromArray(byte[] bytes) { + StringBuffer sb = new StringBuffer(); + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); + int tmp; + while ((tmp = bais.read()) != -1) { + sb.append(Integer.toHexString(tmp)); + } + return sb.toString(); + } + + public void readMarkAndReset(byte[] bytes,int mark) { + StringBuffer sb = new StringBuffer(); + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); + bais.mark(mark); + + bais.skip(mark + 1); + int tmp; + while ((tmp = bais.read()) != -1) { + sb.append(Integer.toHexString(tmp)); + } + + System.out.println("越过标记后的字符串"); + System.out.println(sb.toString()); + + bais.reset(); + sb.setLength(0); + + int m; + while ((m = bais.read()) != -1) { + sb.append(Integer.toHexString(m)); + } + + System.out.println("重置之后的字符串"); + System.out.println(sb.toString()); + } + + + +} diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/read_file.txt b/src/main/java/cn/byhieg/iotutorial/bytestreamio/read_file.txt new file mode 100644 index 0000000..2cb3b74 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/bytestreamio/read_file.txt @@ -0,0 +1,5 @@ +I don't know what I do now is right, those are wrong, and when I finally die then I know these. +So what I can do now is to try to do everything well, and then wait to die . +Sometimes I can be very happy to talk to everyone, can be very presumptuous, but no one knows, +it is but very deliberately camouflage, camouflage; I can make him very happy very happy, +but couldn't find the source of happiness, just giggle. \ No newline at end of file diff --git a/src/test/java/cn/byhieg/iotutorialtest/ByteArrayInputStreamExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/ByteArrayInputStreamExampleTest.java new file mode 100644 index 0000000..06953db --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/ByteArrayInputStreamExampleTest.java @@ -0,0 +1,25 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.bytestreamio.ByteArrayInputStreamExample; +import junit.framework.TestCase; + +/** + * Created by byhieg on 17/2/21. + * Mail to byhieg@gmail.com + */ +public class ByteArrayInputStreamExampleTest extends TestCase { + public void testReadFromArray() throws Exception { + byte[] bytes = new byte[]{0x1,0x2,0x3,0x4,0x5,0x6,0x7}; + ByteArrayInputStreamExample example = new ByteArrayInputStreamExample(); + System.out.println(example.readFromArray(bytes)); + } + + + public void testReadMarkAndReset() throws Exception { + byte[] bytes = new byte[]{0x1,0x2,0x3,0x4,0x5,0x6,0x7}; + ByteArrayInputStreamExample example = new ByteArrayInputStreamExample(); + example.readMarkAndReset(bytes,2); + System.out.println("++++++++++++++++++++"); + } + +} \ No newline at end of file From 39249f096230b8eb7752ae7941c2906495c0636a Mon Sep 17 00:00:00 2001 From: byhieg Date: Thu, 23 Feb 2017 10:24:57 +0800 Subject: [PATCH 061/118] =?UTF-8?q?=E5=A2=9E=E5=8A=A0ByteArrayOutputStream?= =?UTF-8?q?=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotationstutorial/AMethodProcess.java | 1 - .../listtutorial/SimpleLinkedList.java | 2 -- .../ByteArrayOutPutStreamExample.java | 27 +++++++++++++++++++ .../iotutorial/bytestreamio/write_file.txt | 0 .../ByteArrayOutPutStreamExampleTest.java | 15 +++++++++++ 5 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayOutPutStreamExample.java create mode 100644 src/main/java/cn/byhieg/iotutorial/bytestreamio/write_file.txt create mode 100644 src/test/java/cn/byhieg/iotutorialtest/ByteArrayOutPutStreamExampleTest.java diff --git a/src/main/java/cn/byhieg/annotationstutorial/AMethodProcess.java b/src/main/java/cn/byhieg/annotationstutorial/AMethodProcess.java index 360ba46..3494539 100644 --- a/src/main/java/cn/byhieg/annotationstutorial/AMethodProcess.java +++ b/src/main/java/cn/byhieg/annotationstutorial/AMethodProcess.java @@ -1,6 +1,5 @@ package cn.byhieg.annotationstutorial; -import sun.jvm.hotspot.runtime.amd64.AMD64CurrentFrameGuess; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; diff --git a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java index e7533a1..a7a97b4 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java +++ b/src/main/java/cn/byhieg/collectiontutorial/listtutorial/SimpleLinkedList.java @@ -1,7 +1,5 @@ package cn.byhieg.collectiontutorial.listtutorial; -import apple.laf.JRSUIFocus; - /** * Created by byhieg on 17/2/15. * Mail to byhieg@gmail.com diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayOutPutStreamExample.java b/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayOutPutStreamExample.java new file mode 100644 index 0000000..29112cc --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayOutPutStreamExample.java @@ -0,0 +1,27 @@ +package cn.byhieg.iotutorial.bytestreamio; + +import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class ByteArrayOutPutStreamExample { + + public void writeFromFile() throws Exception { + try (InputStream is = new FileInputStream("D://read_file.txt")) { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + byte[] bytes = new byte[1024]; + while (is.read(bytes) != -1) { + output.write(bytes); + } + + String data = output.toString("UTF-8"); + System.out.println(data); + + } + } +} diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/write_file.txt b/src/main/java/cn/byhieg/iotutorial/bytestreamio/write_file.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/cn/byhieg/iotutorialtest/ByteArrayOutPutStreamExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/ByteArrayOutPutStreamExampleTest.java new file mode 100644 index 0000000..b587764 --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/ByteArrayOutPutStreamExampleTest.java @@ -0,0 +1,15 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.bytestreamio.ByteArrayOutPutStreamExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class ByteArrayOutPutStreamExampleTest extends TestCase { + public void testWriteFromFile() throws Exception { + new ByteArrayOutPutStreamExample().writeFromFile(); + } + +} \ No newline at end of file From 2e251b76e8738f40b3c6b4d1c8720cd0434d1d7c Mon Sep 17 00:00:00 2001 From: byhieg Date: Thu, 23 Feb 2017 10:57:26 +0800 Subject: [PATCH 062/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0FileInputStream?= =?UTF-8?q?=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bytestreamio/FileInputStreamExample.java | 22 +++++++++++++++++++ .../FileInputStreamExampleTest.java | 16 ++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/main/java/cn/byhieg/iotutorial/bytestreamio/FileInputStreamExample.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/FileInputStreamExampleTest.java diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/FileInputStreamExample.java b/src/main/java/cn/byhieg/iotutorial/bytestreamio/FileInputStreamExample.java new file mode 100644 index 0000000..a8d61f9 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/bytestreamio/FileInputStreamExample.java @@ -0,0 +1,22 @@ +package cn.byhieg.iotutorial.bytestreamio; + +import java.io.File; +import java.io.FileInputStream; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class FileInputStreamExample { + + public void readFromFile() throws Exception{ + String s = File.separator; + try(FileInputStream fis = new FileInputStream("D:" + s + "read_file.txt")){ + byte[] bytes = new byte[1024]; + while (fis.read(bytes) != -1) { + String str = new String(bytes); + System.out.println(str); + } + } + } +} diff --git a/src/test/java/cn/byhieg/iotutorialtest/FileInputStreamExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/FileInputStreamExampleTest.java new file mode 100644 index 0000000..c52199e --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/FileInputStreamExampleTest.java @@ -0,0 +1,16 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.bytestreamio.FileInputStreamExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class FileInputStreamExampleTest extends TestCase { + + public void testReadFromFile() throws Exception { + new FileInputStreamExample().readFromFile(); + } + +} \ No newline at end of file From 704413591579968b192687b01f5ed268132677dd Mon Sep 17 00:00:00 2001 From: byhieg Date: Wed, 9 Nov 2016 11:15:06 +0800 Subject: [PATCH 063/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ByteArrayOutPutStreamExample.java | 2 +- .../bytestreamio/FileOutputStreamExample.java | 23 ++++++++++++++ .../ByteArrayOutPutStreamExampleTest.java | 2 +- .../FileOutputStreamExampleTest.java | 31 +++++++++++++++++++ 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/main/java/cn/byhieg/iotutorial/bytestreamio/FileOutputStreamExample.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/FileOutputStreamExampleTest.java diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayOutPutStreamExample.java b/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayOutPutStreamExample.java index 29112cc..ba3e5ca 100644 --- a/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayOutPutStreamExample.java +++ b/src/main/java/cn/byhieg/iotutorial/bytestreamio/ByteArrayOutPutStreamExample.java @@ -11,7 +11,7 @@ */ public class ByteArrayOutPutStreamExample { - public void writeFromFile() throws Exception { + public void writeToBytes() throws Exception { try (InputStream is = new FileInputStream("D://read_file.txt")) { ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] bytes = new byte[1024]; diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/FileOutputStreamExample.java b/src/main/java/cn/byhieg/iotutorial/bytestreamio/FileOutputStreamExample.java new file mode 100644 index 0000000..4767cf4 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/bytestreamio/FileOutputStreamExample.java @@ -0,0 +1,23 @@ +package cn.byhieg.iotutorial.bytestreamio; + +import java.io.File; +import java.io.FileOutputStream; +import java.nio.charset.Charset; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class FileOutputStreamExample { + + public void writeToFile() throws Exception{ + String s = File.separator; + try (FileOutputStream fos = new FileOutputStream("D:" + s + "write_file.txt")) { + for (int i = 0 ; i < 10 ; i++) { + String str = i + ""; + fos.write(str.getBytes(Charset.forName("UTF-8"))); + fos.flush(); + } + } + } +} diff --git a/src/test/java/cn/byhieg/iotutorialtest/ByteArrayOutPutStreamExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/ByteArrayOutPutStreamExampleTest.java index b587764..2d13943 100644 --- a/src/test/java/cn/byhieg/iotutorialtest/ByteArrayOutPutStreamExampleTest.java +++ b/src/test/java/cn/byhieg/iotutorialtest/ByteArrayOutPutStreamExampleTest.java @@ -9,7 +9,7 @@ */ public class ByteArrayOutPutStreamExampleTest extends TestCase { public void testWriteFromFile() throws Exception { - new ByteArrayOutPutStreamExample().writeFromFile(); + new ByteArrayOutPutStreamExample().writeToBytes(); } } \ No newline at end of file diff --git a/src/test/java/cn/byhieg/iotutorialtest/FileOutputStreamExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/FileOutputStreamExampleTest.java new file mode 100644 index 0000000..d814cee --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/FileOutputStreamExampleTest.java @@ -0,0 +1,31 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.bytestreamio.FileOutputStreamExample; +import junit.framework.TestCase; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class FileOutputStreamExampleTest extends TestCase { + public void testWriteToFile() throws Exception { + new FileOutputStreamExample().writeToFile(); + String s = File.separator; + try (FileInputStream fis = new FileInputStream("D:" + s + "write_file.txt")) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte[] bytes = new byte[1024]; + while (fis.read(bytes) != -1) { + baos.write(bytes); + } + + System.out.println(baos.toString()); + } + + + } + +} \ No newline at end of file From 34dede50aae422ae866273a868a84a8410bc88d0 Mon Sep 17 00:00:00 2001 From: byhieg Date: Thu, 10 Nov 2016 11:24:59 +0800 Subject: [PATCH 064/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BufferdInputStreamExample.java | 23 +++++++++++++++++++ .../BufferdInputStreamExampleTest.java | 15 ++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/main/java/cn/byhieg/iotutorial/bytestreamio/BufferdInputStreamExample.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/BufferdInputStreamExampleTest.java diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/BufferdInputStreamExample.java b/src/main/java/cn/byhieg/iotutorial/bytestreamio/BufferdInputStreamExample.java new file mode 100644 index 0000000..1b05078 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/bytestreamio/BufferdInputStreamExample.java @@ -0,0 +1,23 @@ +package cn.byhieg.iotutorial.bytestreamio; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class BufferdInputStreamExample { + + public void readFromFile() throws Exception{ + String s = File.separator; + try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:" + s + "read_file.txt"))) { + byte[] bytes = new byte[1024]; + while (bis.read(bytes) != -1) { + String str = new String(bytes); + System.out.println(str); + } + } + } +} diff --git a/src/test/java/cn/byhieg/iotutorialtest/BufferdInputStreamExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/BufferdInputStreamExampleTest.java new file mode 100644 index 0000000..7f8afbd --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/BufferdInputStreamExampleTest.java @@ -0,0 +1,15 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.bytestreamio.BufferdInputStreamExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class BufferdInputStreamExampleTest extends TestCase { + public void testReadFromFile() throws Exception { + new BufferdInputStreamExample().readFromFile(); + } + +} \ No newline at end of file From 99d0dbf7d74e7a3cd3d5a8bfba9f9bba544c6147 Mon Sep 17 00:00:00 2001 From: byhieg Date: Thu, 3 Nov 2016 11:35:36 +0800 Subject: [PATCH 065/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BufferdOutputStreamExample.java | 24 +++++++++++++++++++ .../BufferdOutputStreamExampleTest.java | 16 +++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/main/java/cn/byhieg/iotutorial/bytestreamio/BufferdOutputStreamExample.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/BufferdOutputStreamExampleTest.java diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/BufferdOutputStreamExample.java b/src/main/java/cn/byhieg/iotutorial/bytestreamio/BufferdOutputStreamExample.java new file mode 100644 index 0000000..355d0ad --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/bytestreamio/BufferdOutputStreamExample.java @@ -0,0 +1,24 @@ +package cn.byhieg.iotutorial.bytestreamio; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.nio.charset.Charset; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class BufferdOutputStreamExample { + + public void writeToFile() throws Exception{ + String s = File.separator; + try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:" + s + "write_file.txt"))) { + for (int i = 0 ; i < 10000000 ; i++) { + String str = i + ""; + bos.write(str.getBytes(Charset.forName("UTF-8"))); + bos.flush(); + } + } + } +} diff --git a/src/test/java/cn/byhieg/iotutorialtest/BufferdOutputStreamExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/BufferdOutputStreamExampleTest.java new file mode 100644 index 0000000..ef4fd40 --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/BufferdOutputStreamExampleTest.java @@ -0,0 +1,16 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.bytestreamio.BufferdOutputStreamExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class BufferdOutputStreamExampleTest extends TestCase { + public void testWriteToFile() throws Exception { + new BufferdOutputStreamExample().writeToFile(); + + } + +} \ No newline at end of file From f276ee2f294517628d3bf153b08bcae747e0bc4d Mon Sep 17 00:00:00 2001 From: byhieg Date: Sat, 12 Nov 2016 15:49:42 +0800 Subject: [PATCH 066/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InputStreamReaderExample.java | 22 +++++++++++++++++++ .../OutputStreamWriterExample.java | 22 +++++++++++++++++++ .../BufferdOutputStreamExampleTest.java | 2 +- .../InputStreamReaderExampleTest.java | 15 +++++++++++++ .../OutputStreamWriterExampleTest.java | 16 ++++++++++++++ 5 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/byhieg/iotutorial/charsetstreamio/InputStreamReaderExample.java create mode 100644 src/main/java/cn/byhieg/iotutorial/charsetstreamio/OutputStreamWriterExample.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/InputStreamReaderExampleTest.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/OutputStreamWriterExampleTest.java diff --git a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/InputStreamReaderExample.java b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/InputStreamReaderExample.java new file mode 100644 index 0000000..068d53f --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/InputStreamReaderExample.java @@ -0,0 +1,22 @@ +package cn.byhieg.iotutorial.charsetstreamio; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.io.Reader; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class InputStreamReaderExample { + + public void readFromFile() throws Exception{ + try (Reader reader = new InputStreamReader(new FileInputStream("D:" + File.separator + "read_file.txt"))) { + char[] chars = new char[1024]; + while (reader.read(chars) != -1){ + System.out.print(new String(chars)); + } + } + } +} diff --git a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/OutputStreamWriterExample.java b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/OutputStreamWriterExample.java new file mode 100644 index 0000000..5d22b35 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/OutputStreamWriterExample.java @@ -0,0 +1,22 @@ +package cn.byhieg.iotutorial.charsetstreamio; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class OutputStreamWriterExample { + + public void writeToFile() throws Exception{ + try (Writer writer = new OutputStreamWriter(new FileOutputStream("D:" + File.separator + "write_file.txt"))) { + for (int i = 0 ; i < 10000;i++) { + writer.write(i + ""); + writer.write("\r\n"); + } + } + } +} diff --git a/src/test/java/cn/byhieg/iotutorialtest/BufferdOutputStreamExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/BufferdOutputStreamExampleTest.java index ef4fd40..dbecd71 100644 --- a/src/test/java/cn/byhieg/iotutorialtest/BufferdOutputStreamExampleTest.java +++ b/src/test/java/cn/byhieg/iotutorialtest/BufferdOutputStreamExampleTest.java @@ -13,4 +13,4 @@ public void testWriteToFile() throws Exception { } -} \ No newline at end of file +} diff --git a/src/test/java/cn/byhieg/iotutorialtest/InputStreamReaderExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/InputStreamReaderExampleTest.java new file mode 100644 index 0000000..c39f35f --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/InputStreamReaderExampleTest.java @@ -0,0 +1,15 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.charsetstreamio.InputStreamReaderExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class InputStreamReaderExampleTest extends TestCase { + public void testReadFromFile() throws Exception { + new InputStreamReaderExample().readFromFile(); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/iotutorialtest/OutputStreamWriterExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/OutputStreamWriterExampleTest.java new file mode 100644 index 0000000..64a719d --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/OutputStreamWriterExampleTest.java @@ -0,0 +1,16 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.charsetstreamio.OutputStreamWriterExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class OutputStreamWriterExampleTest extends TestCase { + + public void testWriteToFile() throws Exception { + new OutputStreamWriterExample().writeToFile(); + } + +} \ No newline at end of file From c85e114d208b704c84b6b41f5c784412507256c7 Mon Sep 17 00:00:00 2001 From: byhieg Date: Sun, 6 Nov 2016 16:09:20 +0800 Subject: [PATCH 067/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../charsetstreamio/FileReaderExample.java | 20 +++++++++++++++++++ .../charsetstreamio/FileWriterExample.java | 19 ++++++++++++++++++ .../OutputStreamWriterExample.java | 2 +- .../iotutorialtest/FileReaderExampleTest.java | 15 ++++++++++++++ .../iotutorialtest/FileWriterExampleTest.java | 15 ++++++++++++++ 5 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/byhieg/iotutorial/charsetstreamio/FileReaderExample.java create mode 100644 src/main/java/cn/byhieg/iotutorial/charsetstreamio/FileWriterExample.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/FileReaderExampleTest.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/FileWriterExampleTest.java diff --git a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/FileReaderExample.java b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/FileReaderExample.java new file mode 100644 index 0000000..3510be4 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/FileReaderExample.java @@ -0,0 +1,20 @@ +package cn.byhieg.iotutorial.charsetstreamio; + +import java.io.File; +import java.io.FileReader; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class FileReaderExample { + + public void readFromFile() throws Exception{ + try (FileReader reader = new FileReader("D:" + File.separator + "read_file.txt")) { + char[] chars = new char[1024]; + while (reader.read(chars) != -1) { + System.out.println(chars); + } + } + } +} diff --git a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/FileWriterExample.java b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/FileWriterExample.java new file mode 100644 index 0000000..5ae8da8 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/FileWriterExample.java @@ -0,0 +1,19 @@ +package cn.byhieg.iotutorial.charsetstreamio; + +import java.io.File; +import java.io.FileWriter; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class FileWriterExample { + + public void writeToFile() throws Exception { + try (FileWriter writer = new FileWriter("D:" + File.separator + "write_file.txt")) { + for (int i = 0 ; i< 1000000;i++) { + writer.write("我是byhieg"); + } + } + } +} diff --git a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/OutputStreamWriterExample.java b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/OutputStreamWriterExample.java index 5d22b35..aa35e77 100644 --- a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/OutputStreamWriterExample.java +++ b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/OutputStreamWriterExample.java @@ -14,7 +14,7 @@ public class OutputStreamWriterExample { public void writeToFile() throws Exception{ try (Writer writer = new OutputStreamWriter(new FileOutputStream("D:" + File.separator + "write_file.txt"))) { for (int i = 0 ; i < 10000;i++) { - writer.write(i + ""); + writer.write("我是中国人" + ""); writer.write("\r\n"); } } diff --git a/src/test/java/cn/byhieg/iotutorialtest/FileReaderExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/FileReaderExampleTest.java new file mode 100644 index 0000000..ecad4af --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/FileReaderExampleTest.java @@ -0,0 +1,15 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.charsetstreamio.FileReaderExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class FileReaderExampleTest extends TestCase { + public void testReadFromFile() throws Exception { + new FileReaderExample().readFromFile(); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/iotutorialtest/FileWriterExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/FileWriterExampleTest.java new file mode 100644 index 0000000..5b21731 --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/FileWriterExampleTest.java @@ -0,0 +1,15 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.charsetstreamio.FileWriterExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class FileWriterExampleTest extends TestCase { + public void testWriteToFile() throws Exception { + new FileWriterExample().writeToFile(); + } + +} \ No newline at end of file From b014e02562b099e072aa975f4fe5cb063f51123c Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 1 Nov 2016 17:06:00 +0800 Subject: [PATCH 068/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BufferedReaderExample.java | 21 ++++++++++++++++++ .../BufferedWriterExample.java | 22 +++++++++++++++++++ .../BufferedReaderExampleTest.java | 15 +++++++++++++ .../BufferedWriterExampleTest.java | 17 ++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedReaderExample.java create mode 100644 src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedWriterExample.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/BufferedReaderExampleTest.java create mode 100644 src/test/java/cn/byhieg/iotutorialtest/BufferedWriterExampleTest.java diff --git a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedReaderExample.java b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedReaderExample.java new file mode 100644 index 0000000..16dfcda --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedReaderExample.java @@ -0,0 +1,21 @@ +package cn.byhieg.iotutorial.charsetstreamio; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class BufferedReaderExample { + + public void readFromFile() throws Exception{ + try(BufferedReader reader = new BufferedReader(new FileReader("D:" + File.separator + "read_file.txt"))){ + char[] chars = new char[1024]; + while (reader.read(chars) != -1) { + System.out.println(chars); + } + } + } +} diff --git a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedWriterExample.java b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedWriterExample.java new file mode 100644 index 0000000..1bd2228 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedWriterExample.java @@ -0,0 +1,22 @@ +package cn.byhieg.iotutorial.charsetstreamio; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class BufferedWriterExample { + + + public void writeToFile() throws Exception { + try (BufferedWriter bw = new BufferedWriter(new FileWriter("D:" + File.separator + "write_file.txt"))) { + for (int i = 0 ;i < 100000;i++) { + String str = "阿萨建设u无IDask链接"; + bw.write(str); + } + } + } +} diff --git a/src/test/java/cn/byhieg/iotutorialtest/BufferedReaderExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/BufferedReaderExampleTest.java new file mode 100644 index 0000000..a8f4add --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/BufferedReaderExampleTest.java @@ -0,0 +1,15 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.charsetstreamio.BufferedReaderExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class BufferedReaderExampleTest extends TestCase { + public void testReadFromFile() throws Exception { + new BufferedReaderExample().readFromFile(); + } + +} \ No newline at end of file diff --git a/src/test/java/cn/byhieg/iotutorialtest/BufferedWriterExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/BufferedWriterExampleTest.java new file mode 100644 index 0000000..5b34db1 --- /dev/null +++ b/src/test/java/cn/byhieg/iotutorialtest/BufferedWriterExampleTest.java @@ -0,0 +1,17 @@ +package cn.byhieg.iotutorialtest; + +import cn.byhieg.iotutorial.charsetstreamio.BufferedWriterExample; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/2/23. + * Mail byhieg@gmail.com + */ +public class BufferedWriterExampleTest extends TestCase { + public void testWriteToFile() throws Exception { + + new BufferedWriterExample().writeToFile(); + + } + +} \ No newline at end of file From 0415ba160515f41402748820a90ede1102f11586 Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 22 Nov 2016 17:11:35 +0800 Subject: [PATCH 069/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iotutorial/charsetstreamio/BufferedReaderExample.java | 6 +++--- .../cn/byhieg/iotutorial/{bytestreamio => }/read_file.txt | 0 .../cn/byhieg/iotutorial/{bytestreamio => }/write_file.txt | 0 .../cn/byhieg/iotutorialtest/BufferedWriterExampleTest.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename src/main/java/cn/byhieg/iotutorial/{bytestreamio => }/read_file.txt (100%) rename src/main/java/cn/byhieg/iotutorial/{bytestreamio => }/write_file.txt (100%) diff --git a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedReaderExample.java b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedReaderExample.java index 16dfcda..abe6be2 100644 --- a/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedReaderExample.java +++ b/src/main/java/cn/byhieg/iotutorial/charsetstreamio/BufferedReaderExample.java @@ -12,9 +12,9 @@ public class BufferedReaderExample { public void readFromFile() throws Exception{ try(BufferedReader reader = new BufferedReader(new FileReader("D:" + File.separator + "read_file.txt"))){ - char[] chars = new char[1024]; - while (reader.read(chars) != -1) { - System.out.println(chars); + String str; + while ((str = reader.readLine()) != null) { + System.out.println(str); } } } diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/read_file.txt b/src/main/java/cn/byhieg/iotutorial/read_file.txt similarity index 100% rename from src/main/java/cn/byhieg/iotutorial/bytestreamio/read_file.txt rename to src/main/java/cn/byhieg/iotutorial/read_file.txt diff --git a/src/main/java/cn/byhieg/iotutorial/bytestreamio/write_file.txt b/src/main/java/cn/byhieg/iotutorial/write_file.txt similarity index 100% rename from src/main/java/cn/byhieg/iotutorial/bytestreamio/write_file.txt rename to src/main/java/cn/byhieg/iotutorial/write_file.txt diff --git a/src/test/java/cn/byhieg/iotutorialtest/BufferedWriterExampleTest.java b/src/test/java/cn/byhieg/iotutorialtest/BufferedWriterExampleTest.java index 5b34db1..2f67683 100644 --- a/src/test/java/cn/byhieg/iotutorialtest/BufferedWriterExampleTest.java +++ b/src/test/java/cn/byhieg/iotutorialtest/BufferedWriterExampleTest.java @@ -9,7 +9,7 @@ */ public class BufferedWriterExampleTest extends TestCase { public void testWriteToFile() throws Exception { - + new BufferedWriterExample().writeToFile(); } From 24f9535ce2f8d72cead78bdff450d6c4f0fd145e Mon Sep 17 00:00:00 2001 From: byhieg Date: Thu, 17 Nov 2016 17:22:05 +0800 Subject: [PATCH 070/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/byhieg/iotutorial/README.md | 30 ++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/main/java/cn/byhieg/iotutorial/README.md diff --git a/src/main/java/cn/byhieg/iotutorial/README.md b/src/main/java/cn/byhieg/iotutorial/README.md new file mode 100644 index 0000000..5fbf775 --- /dev/null +++ b/src/main/java/cn/byhieg/iotutorial/README.md @@ -0,0 +1,30 @@ +# JavaIO讲解 + +## 字节流 +在该目录下,`bytestreamio` 是 字节流的io类的例子。 +分别有对应输入流的: + +- FileInputStream +- BufferedInputStream +- ByteArrayInputStream + +对应输出流的: + +- FileOutputStream +- BufferedOutputStream +- ByteArrayOutputStream + + +## 字符流 +在该目录下,`charsetstreamio`是 字符流的io类的例子。 + +分别对应输入流的: + +- InputStreamReader +- FileReader +- BufferedWriter + +还有一些涉及到socket,序列化,压缩,管道的类的例子,放到其他的文件夹中。 + +关于IO的一些资料,网上也有很多,就不在总结了,放出一些链接出来: +[深入分析IO](https://www.ibm.com/developerworks/cn/java/j-lo-javaio/#ibm-pcon) From 25d38b4b3dd4c94b62b6765cd3d9a0b7d0c90e67 Mon Sep 17 00:00:00 2001 From: byhieg Date: Fri, 18 Nov 2016 17:27:16 +0800 Subject: [PATCH 071/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/byhieg/iotutorial/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/cn/byhieg/iotutorial/README.md b/src/main/java/cn/byhieg/iotutorial/README.md index 5fbf775..0b7b963 100644 --- a/src/main/java/cn/byhieg/iotutorial/README.md +++ b/src/main/java/cn/byhieg/iotutorial/README.md @@ -27,4 +27,5 @@ 还有一些涉及到socket,序列化,压缩,管道的类的例子,放到其他的文件夹中。 关于IO的一些资料,网上也有很多,就不在总结了,放出一些链接出来: + [深入分析IO](https://www.ibm.com/developerworks/cn/java/j-lo-javaio/#ibm-pcon) From eebe51e0ab4a79829f64530f83753dc2cadd60c8 Mon Sep 17 00:00:00 2001 From: byhieg Date: Fri, 11 Nov 2016 17:28:19 +0800 Subject: [PATCH 072/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/byhieg/iotutorial/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/cn/byhieg/iotutorial/README.md b/src/main/java/cn/byhieg/iotutorial/README.md index 0b7b963..7291ca2 100644 --- a/src/main/java/cn/byhieg/iotutorial/README.md +++ b/src/main/java/cn/byhieg/iotutorial/README.md @@ -1,4 +1,4 @@ -# JavaIO讲解 +# Java IO 讲解 ## 字节流 在该目录下,`bytestreamio` 是 字节流的io类的例子。 From f650892f51bb22b534971c951cd0dd89a9589e5b Mon Sep 17 00:00:00 2001 From: byhieg Date: Fri, 4 Nov 2016 17:29:33 +0800 Subject: [PATCH 073/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/byhieg/iotutorial/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/cn/byhieg/iotutorial/README.md b/src/main/java/cn/byhieg/iotutorial/README.md index 7291ca2..c217dfc 100644 --- a/src/main/java/cn/byhieg/iotutorial/README.md +++ b/src/main/java/cn/byhieg/iotutorial/README.md @@ -1,5 +1,7 @@ # Java IO 讲解 +源码均在src目录下,测试的代码是在test目录下 + ## 字节流 在该目录下,`bytestreamio` 是 字节流的io类的例子。 分别有对应输入流的: From e8012d25b4e2aec6fd1585bee38463e09277780e Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 15 Nov 2016 09:44:43 +0800 Subject: [PATCH 074/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JavaTutorial\347\233\256\345\275\225.jpg" | Bin 137460 -> 156385 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/images/JavaTutorial\347\233\256\345\275\225.jpg" "b/images/JavaTutorial\347\233\256\345\275\225.jpg" index e60e0c16ae55baef272a48712df2d1b59b9ac526..7d8abf1584ae2b9f01de6eb643f45802767c0a03 100644 GIT binary patch literal 156385 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 }?db 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%0D2iy_L4Xq|iC(wVnz7ZhnpJYT5?w?y&b@7xl& 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

LSMW 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%0DXZ1V*tA#hnCM@5n z?X8#{&W?SzzO*tm_@SYI&ql6e{z5>HtQzsP^8@(1jeiEo) z1I^quyeS{hlR-Q9uN&Ee9_%}@z(FoW;{hwvVO3=wMSVNRJ;0!UM}3`=bGqfyXY*Ay zqy=cm%*l?Fq%Nf-rgYshJgQ^%FFtS2r zD$d@?2v4`>XBzP8^3RLkKdW`0uVwfo!CHZgsRzA^dD5@ zDRk@AA6}z|dz7*#5Xo@w6B5Txb`gIdW&{L9*cEe~Ff=CAD=V|1`=k7Kj$FY6KQ#@J z4UDObINH4ex@Eo1A$_L41n8g6pxIxjsTFO&-JO1L=S3hD1rV%IdK=eYVRaDs87pk> zYr<*GSdF+oigzzCKys&otrqmwyr=*PW z(;tH78K^Iy@V}m@Wf0o|r(sC)v{U9xau!b%;eGN;BYq(i{x*P^SMtLLxDQUdjRc<$ z=QmF_tbDt6wz5nkDBP3T=IM5stydBkwlcR^t^0#8SviJCr2Hkgo`6BXJzi$u!c6%Y zh~D;WWFey%$e};uXEYpdnQNn_3>Wpcte1+U&wugO;|cf+yxT*Y1w!P&f~6mC_H>7M zO{n`ywbXUH)++gVDCkJZ$vG4=9wOc6?uLg;717`jQ)*Lr;I9TDVc}}I(`88}{vV}% zGZ=Phfk4fHgnuc^Z{Yd2KbH^$i%5@#NN2ts@b*9Uid!1IQ2C0ck(1(#rx!c?!gRTv z7!M9;=Yo{}&H@6iL<)@Pxo@)Pbm&JjQPNdGp`$2sL$vXZAL7`O-PvWdZVe7<%o+C+ zc>+ELkH@Tp&EC)ZKniChfj%;O5Zz=K)lZ*i!SwmV&>;O3 z<|0L2xCic$5^z~nNU6~CJ+&){C&hiQcv%Sednru)4UW%GX2vW0z|azYurBX@4hy%_P}Y!aow(%Y(1ad+ zCL5PRd13wM&qpY7ANh871191cVn*Zk+E7qMP;2)#^0|aepa#$oK4p$XaPzk|!(Rc0 zyqybNfZpR=LcxJ^Sx&ARHrtYjUIqw@45$OA1NDVZiw7of#Qs;j0L9yMeUzm7N?%e+ zsg5GkiYl~@m4$sStx!|Gu9Jx9^)eFBR*WFzLFSjC!>}k~{hmFJlnovj+VM)Q)YRT3 ze*Fw+T*o#~14{TX*S2BIIcs`uWAs3ZJ6^UtgGj`}s(TJ$D5j%KAU_^0W@d^uKSae< zUj6;DVM;&5P!68wp6i|gFT$`2{SZta)?`Z)1f|Z({LSXhzH-PiQp^F5onQ9Mta4q$ zXnL&+vX(ku?|&qr8yaoK&PLfvYsv?ix1ZcG>|__Hx1ZPbuqQpv`)<8y2!nS-q<5V; z%695j9Uh}&pnP4ImXV@eUvoSA@v`~h%~PQPA;|aWAbBKN0(kaF*{)*c!PPbqD4^R> zbF^*BP-THJWnr>wK~!7*&CIB#+{2IW$B|0)tmlu4t=5Yy6pWs+lbPs}?wdKSuQRlB zc+Y<1`=$J^$hA~F>5?4b7=2J}9;z>vP-9&hE)K(xXHEz*Vp)HMd}|`}Ij+mLRj8#f zynFuR#g1T*m6*r6X+|n90_(`m&M}Kux$iZ>=~-?%)R|+4k^j5& zFHL8ss3gisvvUMcCdLZh`aMV+A)uJ!TfRa+tZ@?+yf@iDYmc7e-k6%(=$X|@o9?LJ z)PG~|unV!WvLLRefq7Knw|BI>hO9evAE-_)rU5%B^~&^l73l|iwc z=QQSv=$WVg9T5jY1sj`yGmm-1v`bb|QNAt!l*dV$R;!nSkm&SV;%(q2#>kudwd4^4 zaEbz1>rpI5z&HDeUMo}`r6*;Vy$tM5GT3~wyZijaq12fUm0t~wLO$?c>6@(gCK)9=C0R*60P)! zS%Wx6DyPc6vd@584QdsD$lPCj>gf&{M8KbJU8ZH-bEEH9@rmLD6vs7tlYRvv6ikgF80o$G1t?Za{q@@$&gNv&y2;I zyJtc+oG@q7M89Om>J6N=x0_>6tI8-{H`~*T6WveFLlr6vt1^G4Pv`yxN~k;=en&7r zA6Te4+?{&fzl@43uLJT*@GU~0zepa}+@ex~r=0#HMF4|6zTPs+J`*2V{+;{!&f1~e z3}py#Oc--`9LM&OX4^NoM_RCh={IV>{-ZQ8;W{Zu&yEdx6TMa=tY4D8Pa;+?uD+<) znd@x+v~BnwIP$^(`tZez7$iOa4>Hg?~*5g|?+^JXcE^N%-eTN+%hF%#y05JI;wVfW%%_b(&>yuDrH`!UpYa06hJ5EHp%d5vtWCK!*)_P&iso|zNfn&;* zg`hZXbIs0tt=dFj0P1QQqNZMf9SrfGVV-~qBdj6Ar79pl_&zAv- zH~HwX@V3_h6VS%)wrj1ss|c^E4`?i-_1x5`Y|P!Hc}n~lW!^ke=1x1vqOASg++E&E zRF%n?;I=ee?~lsZ%x|PvQ~f3BEEPHN96G*|YA- zW?z}-$h^#iyl&$#(>$aDOSHd0#vG<$Hf4SKupcFOQnf<>n}C4i?8)O+UlHV3fh zWHkMI1=uA1W8xt~)#erJE^KsHT4Ghd2=GDs{@meeNA(xa4aX7gxB8Z30K7~e%<1pE zP^f6}ja*Q^xGZc5?de1Ql7%zB19CumKkyUUv!lbN*Wm%#@DV&pL)>qS?3}>jAHsfzYcMg{=WhxrA}tyCu%XB|56XN@KMFXM%qJkhXx})7`xu>@NW&uv$Mb z3tyrFv?M>|WGayEsMbH}UwgTV$>cBbc3i3k$+@&-x@)NQ(?*tjp?AJrhap``(e$sf z#C)Kg$+ZiM*>ab#Zv-tVE2%nD?DH8W#}d`WbIQxU>@tT6{(rQgCn@wH^yqx&J4PlV z7N+`AUv#UO!baB=^Qj##?P=B^Jrop)#z+9T3$_oY znTTq67s{?VdDM?RGiu1$_ADNr&MtGRITKR;ri_%CSrA?JC^G%qw>Q9<#7HixDWVAs z=3{li!<^pnaMTx~1^yr6GsT5ZZKh_-;bm(qnR(mY`G~IE7&Wy;q{KAi_z6fSl~a8; zxwjK$CwwXlAio*>M=`IUhDF=Te@~>_vUe6r!)Jh5lnrbc&RUGy>V3DK8=s9kAmDCz za~#U5zP!@;`d$1-MjR1AF}JPo3mbKF;2^wW=g{Px9h~TRYoJ*gllnlj1I^0b*QY&A z>SYG|uuX1m(Hou}x4TT{?LJk(+Ufwu^|P#HW|7Eju1pb>p2T7wy*gbmx*R#sL|iDJ z$9!77aB6Nf932Guk zSrT1@j+4q!*~Z{N0+k;HoOZGAE7`vc&Z*!U@X+X6THA@r_&qE|L`R{v@%!idTJ2DN zyUXY=DcQ_CwX;1J_AZmP*%hNET!RP@OJgE}I;8K=-A>q}`?N?`^In2^dV<=gcbl(B zzhz{6FGh7cnq12sh3Td+zqD@D;j`^~_NpPN*PvGG7N_)}0_;6I@q>S>kqu5sSu}Cj ztmanWbPZHL(=)oorPk%~2F5tS+fwKrKu-b_Yaq0pRMr$+FRGF0@;3_*v>b{k<~SD{lm9^#L|NXp0quHF&tCwVx7Fc{h_ba+1G(1&xL@fvwa@_$6HMCpiaC z9od^%hU=xwL?Eh7S1)>ru{*lUjQl|O6oJL=_`8NS!qe+n0s%8AHpgY>TJ!aE*vYP$ z7H5$P$K_7Ao7;7_w+Jfe00bPUoo)=Aoy&Gv6rMFBeXFY!yaC0XUnBYo;eKyPKtqsrbfOAU7oG@=?&&CpCwBlEzY3mGxQ~qMqALMYSk?WB6?CcB|7wr{{ zzbQ}IjRti|#_5rnFYIsEU!SyywW$=m{s2lJ*q&plJdl;EyUAI4-F&lyx$HA4wx)kJ<~?OG{C0!&!G4Sl{FGs0!ag zGQeRGkuK-7Xkt1EoXu2kzvCC!92FD4vAm274?l)aOUu^aFTH#c&}>6uw=h3frew&+ zR~IXP<>BFBx6Rre5?#eZNT$(gtpkcoNg*0=?26ATOu|OB7j&&n zOQQ`XNM?2wQq7O@;>K`rHqM}2+Eu9YorsF@@$SsY3W;98Oz%$d{qkk))1}KCHPES9 zCss(cwx-5mqJMj}KS@wj5bD({gv-v(9G|bjub!)LhkyQjTF@(!c~DYf!DMg0ETLM1 zhM08IOd_DdM>=pq0@Le;7@chEP1=)xA?Z%7)2Dd^YK=ojFI%!wQ85t`3Xoaf;RSll zu(Pv|u?r~9`Kv`+DR_&^fB4|}q9@cvW_V=e<3|j712hbbX@NQ`>X9;m?md%qJZC=~ z(f+8EHc(`gB`w3uBOeP@T9IKZC+n!*wU!UuIIfpn&`MqFW8n+c<^wg= zYGasQ=X+g4u(`0&pg^ids~(RJ-Cw1?u;>nddwLPY-Pa0B<`#{gsTZwR5})D=wK)IY zd8MLg6-dszSYbuXxSWYsU+GJZj)}>$Z%;78pGrQ+Ie4Q?? zSFt-N$Si|8pYnd^`@Xi2&MziTfpalt`U_DRr=qNe;ZUS3(WD0RT^v<>;`a{w5y(>g zU0r9F<)KX1XTBLkW5Jo1z1BBO27A~}AIjb9be@1RHbA-yhI)r>m`t@N*UyXVud_&( zKu3ILW4>LEkgLPi{nr=oyhjYDR%xw-U{E6RKv<0`iRK}%(C5n}Pkh{DcRnNjcLgf} zSOt!DH>jgpmY;UGEHI!!W`HI^m)ia_ZwAVeyXAQ|D!9{Ja;J#9&1x1b>ygpAs(-QK zAd89Dm?F ze-S8TI-5DUZ{F;75vHk~>@qD>Z5z~xM&~$O|04uPjxdw5^W`V97>el2-<#$k=13?- zMZ@F?l4|8QEU@t>2VoHr_;gC|-FJTTsvC-#ZtvzVQ*=P>x=*Hg$KjrhHY5@}?;|Tt z&fRgHidq7WzHnVXT#wu!%~T18Z62;M@(y+{O1WO=M_*s>5DWEh+WVGak4hEK>DWyK z%Bv{V8^;mv?5859>>?)aCMNFfq!OYc7U?GO8|Vt{=?@&}kNv17X(`$(S+%h~N6a;k z7~PvwAE_;>@`>X=TmUH} zI)ZD=`KNMBXWelfCM-4^9_L1kRE+IKQS&dtMm*o!U48i$cwRc|l)sBw`Zn=$b^U7H z_`R|snBU|<|gY4xjrRZi?PriSX>rr&ELMBA3kiR<(DSBZd#E?JcyVO z%oe{em_DQuttj2jiw~0z>{?ZiF?PG?lSlZyIBIFjOx{p>KDecO2D9WPxERd-`D;@m zdG$rVaxu`Df!vW=8oN3UvvhO+>df{Qhm}d$J`Y>XIwV zPd4{y)Iy2}$+KO3AU3-?x=jd~BjsAKeWnLo3Glu4-}+uluz(#Y#+qu&7@t1`OX+kM z=Vy0?tBZ?{t;87#IeF9^eYM#Xegf-;(Q;*{KjQrL*1=Rfl`Exsl?)XfY2cdO)@Uuz z2yt~Fg|)^##RN82g*Sps-HqmIY+^z3ZH#(YpET$7nyamzjGgS($VvPPg%S!9ir?5y z(u{7B_#DrY?F@Q~8=G-IxOP2GJg=Iatcy#p0z*=RRBq6R-=V>7Le@`!HYTzunNe4l zmpVf-%M$WoV_wk%9%|A4ZSkjU_=JROwCQE~`kRc~_$TD`ztjR6YaB;XHZH8T*1{{B z3!BzszzBWxnPv5w{TbdA|2S&37B?!=$u}l66qq`d-bG@jpU4LKA(&pW7U$EYm&NT5 zvidNE_}N(5L`;m_%$A5HYfC)CgC%o0@A9Q;yo^WqDxnBQ#P5p(bG1w`l<@Xrr@x$B z=ONL97w{usJ5T)^mvN ze(SQO1YG<5=AKEfHTnzCH{$GfhD|S>aXUNWgd{-F5pdDf#WwI$SNp!13n2}=A2L0Q z@Pt8>iVYIjQ7Y|`;+(}HorFnr+3smuwkJTdKKobo!cr<5j4>+LzYhjRjUB3t7xtTr z8#CwGK*O1nCmqeUpzq6l`1t7L`3>_fJzRZ)alB2E>C{v0s&h9W+$L!v{#^{q;<~C? z6mF5|$6f#+OmlH+lY_w=_y`aBpaj3swbidTl}wil?rO5;a#RToO$Xy-W$jtC87Xcm zdK6uf2lL-CqU9Z;dkyl(O_$C*!k)o2Ha12^Mj#+AA|hNng3Hqpm=}pp03GJWj6Lkv zr(J(9<#w~s(Pmsv%$1mJ$CK=;pHbf&t>RKO9jf#56X`-Dk-mld`D>brd~ajV-R*Kt zh13fA(HH(;C<>#jq30wyHH1YX$HvYK&ZYZ2yDYY3?Sg zMwm(R5f{rhvF<-r>{Is_ctc+?01oltd8{}ouJ7bOqdV%5!X z;#iY)b5z`L9itXQhDW{UedDaVg&0a~UZd84rp=5|$s7?MIg#Mq&~R~lD#-49G#)t7 z`t=eeqp6$yBt(ifUFfnS!R*Sq4Y#{~3p9Q)MW-LnVE&apRYRm@ZYo#0#5|?siJ)KA z%R|QTp!felQ5wPE;mJqbv+M{UE12h0WSg(eM!!>=6?L{rQe3L4W@B*@D<{UUS*u>Q z2m8l9V+yF@Op9~P5?G$|a&@*RA|mP{gH}7*d=3FoWjygACWzKkuYi<{%=)AV+tSj~ zFqZ^GpvI%46X}<;x7ShjI<8cj6nUVxGmN)?H2d^9#OcNJoOjwOjvpMqt6yd5k9nSW z{YA3#*lrN1Ea)WEjNQp}rc4nv++Hx6RP_xJt8?E*N_47@=#KMG&09?C+F6n*jMB4U zZu9M(FDy2z(F+}u>-aw}~N!7yQ;ssUv&_uw_-jSG3izHBEwb?4*kndiJ znAjZu_}cjJU~g%1^^i8bPLZF%bi79Jdu@4atXa%u1-aMO;-c{z!b-XzjOdAk)-|H! zqR8HySK8kj(|u-XRM109Rl{bgcXROhGxzrw`2|Br4V)l3nPQ7zF6$T$H|JZ5Rl`C9 z)4kN5{&j=i8JY?3Yv^#7)&(6nVKb4&jLf7S+-+|^va_kPmXPJIfiPdh=Xnzl^l0@L zH8>R6OL%?w8hio4U}0@DYGSDU;Vib^BvAXbJzYe)Y6pW|&t$=ELdK$-grqA)^upkx zs<6GC*D2ekt3v}rPW+^auvpujLR4&M-5XpRf~)#cAVgkeqFmd zXHlr-^aOQp*ent@xbOP0Mm;Onb0ah_JlvTpwoh?$$^Kd*0T`;7w~I}iX_O@k(e+mY ztpu+6f|~r1?CT@w#-feLi{?4{Oi}=v%MHm)^YEuoNwOb}-+DS=1xYBDy9zwLe8`ok z<^6$5>TytHdW3ZZTM?}u6%`ejB=Cf!I-7j?T`Mb@JT0mYG(!G9f?|8am&^rI1772jtmx-LHE*af(cz zHqJadzdTsL+a;W5Q#0~S0nfTc{*P|`Bp}y zy75gifNyf;`};FXYpab7+|i+l=IH8_B~j57-Ns5zm*%DXT6HAk^;KG1x`28l*6XB+ z<;*}D@gN43ucGGT&c|EvY=#X^{5ZB=v$Khg)_R3!wqtYy%{naBxg5g9c?xbQ6p5$^!>RJS zO|IvMn*iErh}D{W0}sekixA`~cAt=WA~LM9Tud0JPc&3#9Sq^M4z|OL#+f9>CNgDW zbA(QGUez}127?4{)viPqPN`Vu^%zI(@RsmUAzeSXqUc7#;Uo zt)40RzO%HodX>KmzrKlnv^&rYS*!s&!GeVl`xphk_qA+Dr1EQ&czJOf=IVUxxdhH3a|)PTK$8`%M4LY%1^WfhS)cr@ltD$4nIBq~n6jY19;1qJGz?FsvxNx2;n zxvQGXy>Cwu2}J<|n0DM@f8wB7?KJwF;&oq4#DvRgpM2Ip;z)*IhTc=eZw(Ez0PYsN z@@NVT9mqJzma~9TIn%Nj6DQL#WY_hjb<{sh+K&WIG7uID7@LST?O`lXC)y?;&L8PI zT;`vjS{vELI7_ZFojKm))YZ(w!tY$7xIjMN zzDP~`C9{a2sAQtNTt@qgI+%dje&?|mG;MX^9ZxxA@Mz!%b3t$ZdH9e-E zt&$fwj~oDBs(9JGsFO;$n9J>a{L`6JS9+`~m(@alc%g39@$py`|7A$Za?$E&(<|5; zw#IH9jQ{*oEQf{jN?1ojLpbt#pkRnhQnfSUN7LqlD(gbEw7ABs#%jCz7Ad5Ii{wQ# z(gVz7em~SXichE%t_q-bzITAJP5c#NR-0LVI3g|1O;U+~O=Q{4!#Wu}?%3C?yuV zyWV)u4TEdhsQKkskk|D}#=X6wHC8(I@7Db7)&y+DDwu+`G+RrC$6FrF3k%g@@1Ulp z7=sPm=F9K+R%W$C84B0P6$edQnBfMja2%U9Nt(D)15V2a7&zxy8?3R+(;!#ikQxm`mY1$HDaH&W%N^g?g%e7i=xTAQa`@Q2BO*WnO{|P)l1< zZjz0;Wh^G17b@cBJ_B;u?U3iosQUNBrzCgS(wmMQRJ@JO_UswIZ zX%lwS(;lwuq{5T!rzX#Zhm;M>7(V}Gy8eO9dJ-?}aBGWCudr>ztKYni2~lx#07u70 zF*1PiQD!)1=+yg!gS1gk>Yd>nqY4y_Pw5M>M4a63hce)|8Y98Ax zz-@o2$IC0cc7@&E{NmX>&Iee``db^dr6wzr!W2h78=*iBsM=!b1i48>x8Iy*0Carf zK5K^yk`xVvzChPLntUS8wX>P1rTrYbQFF$|$tgNi6HnkaG0KR2aXQ;p?u*5Emww{T zW$fb)3ot0fb&!{{e0SlDvSKw2g$s`Jq~Bha0(a}k8c&yG}hkJ+| zX#y`3PM6jRqIKC?`V1KmR#gG%8{vSR{uX56(526MeO#k?uGtkGRy3!nlLKc159$lx zr8cta;^Uj}+_sOgO__{Wr>5+OCgd%PEz^bs)gDz_9o}{jw{9p%=044P#7-eH#G~f= zm_9?V;UTEz`GOj=QMq&peP`Y#-JROGxeO8^2tR+CDpFet_kgU_V5Z4q}Dx#?A;sBa1$XTZdUSo^E7!g4gEv+?#)`H*)YMl zk(emsGL*<^{cKJoT$h@pB>qURM_6ZP*F*Shcx!yIS@bs(V0S`*nw8#OaAFU7Cq*$= zO$`XB5^P~AxDHJ+yJVq9NKEH?`DxI`>_%+qEe2>Y7zmUVenbx6Dx`aJ+ z^zGZUX}d`x14%8oB~})ear?e(fd+w!9PJ~{jxantyaVXP)YQlNnu~QvC`CAoAr*?LM@l#W7(CyQMAs~vov$H)uKEb$1X0(-AO20Z@TzNc_ z+34T)h{bLLYCve0c0e5ttu&32&)w0mx7V_>JE*GSn0R&{Zo`4uhwrqe)R8;0NUis^~)id&d6)LY9$Bn?>$9WN z2<2AU^GU4`&ZQK$X@g6#s)=Sj&2e(vtr7-Dv4k9kt7UtA#q0c4-3rTr4aa-^-g_%f zZRC~PxLH-)8KvIg6_`4gQQ2pZ*C-v{E9jVJG#OQS9?*JSx&Y?fpBbS$digV~RcLAP zI46hPX_4T>3#90r9MgivYU(nhrV^3xmwQq|6&bHyy_%G}NZ^uhjOQw9FW@MBJcfzK zY59zq;|S6Uif5d=&HBiRp~)AZdz~L6ZFrUD1?V(n5&kmtuwgg?h|-gJ7fa_Ib$JHl zYwD+s(m(mw?${$7`e>(sj-u4)S*Te8XLB649X0pGwi)9q9Hd^JkAoDXW8PmISbreb zet-cGd3Z{2V?O4u=vRMG!~`wVVrICEWc5Sb4oA9T!H>S zj#W}oQaYJU|46a?n8lOt=?fK7ma-Qn*1NDaS`N8?LGDAU0!XV@A0ZYWHRi4|Vn$~sDpZ7ouVe+7*zojvZ=Sg_g^gp}%<`V@DA2cCR z0mJo+yztmelsgMw@r{P`q3Z@fx$(l2Tt{slqK~lc*oD)qoD}uEdoC%-42>oYh28(p zvg?gip?FXdG8<_qwYCa(8{K#@s9;)}qg@ppqZ2uKi%7X@tmg6({4=MKlS3X>jQtDi zNIzY3iOAhlXtHN3v5;1)E}xcGZWTEJ$uXv4tbA@4IlkD1_3}tzYNm5VK62pcMgu&s zY8{i>H4S5#OMsCF7V1<-57vCLmB}^5>;$t~qjTtKc#hIw!QqBTm#DK_#_>`{z4v|R z-B0{FZe|7}#mWfv>w|CYC&`nf zi>-a)fq|HrI2mx;hPs@di&MgFIfTJ6*|plQJrfhN%5&F+S{IguOE@nJB5o!sxhv{u zXKs7*=<8S(8)pa{lx-@c=%V5x%7qJyusgaUo&&X6tsO0(M?fijcnNJ{m8F3yuNlJ7 zMy>LAfjiO<4VL_SLBIPO$Bzk&#bZwSC4%`Tiv-$7&KJM=v zh>KKL>9#faKG|7lcRcLrX-&MIkFF(mR`e3o4=C8DmdE);!kF7qMO^Kqa&J*T@5YQ1 zb+KICX(f@sYddu6Q}5%3WQ=3QxT(eNr-1IVR0#!kk$;p7!M&9YDFNK@{w9JNdhQm( z&VI-j2=<$S>EYGI-cD+r8YJdZVPVma@|g#6$1@0nn?M6UPicwj8nJ$YY6L&+7KE#`P ze;!y9o|A02W~go{0%l5N+=mSB^;+eyWZ8;d zN)G#r2}cWuNz=|#iWYg*Y|Ki><8t(ajj=@d7u{jbg&=EcgD@KP6dBNu3{Qbm-@+oi zKN0D*m0lNUJMt8_KNRHeLxpp^j|IYGVzPbPL~LfEuG!D|lct^_F@t6(TxyLNV`-8R zA48+Jk27gn0x}$3mT|FK4{G<{3_)>HO?9DNo)vm+WFj*c&=dS)a9I`lu;t{7+gW*y zLE%C$6_@2#4NJ>lDcSU=Hl_)W+aN1_1C@5%Eo>A?+bEv{Oq7*NP0$e$Bcem>PY)$q zBFKw{AF3Abfn?(qrkk&X-M1^=--03FupMCyNrdeBmr4@R0(7C%E&Dvn_df({HzkxT zzpXemTMKmudesF2J)xjo8mOoAd+U--vQ3rLGMOGOVy?KkHSnuP98V_=P2!j(?0~)q zpq|atQ^!95+SATA@n5gc(6kEx0d(_IP`jj50ojSyBmo3B_EdCcUVid$E)hYyOLF4T zJZcwxs(4G_bTl>-yo=E|f3;A4h%WOaodl8xxPOvGLl0GbhOjzG!7YrP+?~2HfWWaE zVX2P_tJt-(R|-9wI@@X$%%(GLImCh_a(v$3rZ6)EC^UZh*37*}+>apnZ8LbwQ(ilZ zb3(X54T3&CKD&4Y(#&bDBOru)YCRVJu+8mIthyyrJ9ZCg4k*ySed~7&U@7EcN*xe= z&>E<*oFj$6tb!sb*c(U|3W6HHxuvBX-pTuCp;iNq6P7=Llt1!K4Qv?B>#rC|g5QTb zQIk;g7S;ez8~t4d1Ei1ZR8M$=69wIt2AE7$7REvF*3vUK*XBEhxt0@*dJyPn-|rb{ zy*zHSon#j({aAjq<_v*v9V3UI^jjH6M$Vm6h=M}Usql`9(}aJYUPtKA#ESz`-&WVd zEo*#yb*&E2yQq=lsJ#+7H3E851zL)I(hg@97&o`HWROMS>u`HJRL@_+#(=O^5fZ1so4abEmOp zm!XM6Nn~-&kjh3Z3}5+0;?b%qNaYFk#*1#JDj9L9a~H-XPrAU{IIPYJXw^MNjUZnA z15i0}m%$nkvL0Qps1Gi|EuO|s3ZELUc1nHMvQDOq4K2&B$j?ebMX`Q7=5jhLIWjIZ z!J`_s@ukFUEa5cd#O4#g13iqCT$%<^bIo+4a=&WF`S#9iQ$QNgcL)Xf<2p!U=uAR> zB<$yUY&W*qHh_;ZIn*+F`n0OTPF}v0$z-f0xZGr{M83&C)M>ZMaAEbRp!(}zHe_$G zC$vZ(h}X|mH(Da+H?oz!E=vs`0#UorcGRRxDpFF3Kw-7awZZB|(Ng%YW4X2Y z^2P&e9i+L|6y^EMlaYBYE0b|u5hCg<_thhUyPgxeA`sFX4n#G@t7{QUjlR_JF%mLtJtXe~a2 zh6CM#nw~ciaOteevWTcQ^n`@ey9bulw9(OQv|9g|Wx#Zxyv!e;iiLfw+n;+~i7kZL z_%1@8C)O#925%mJwZas%=yF|>GEN&rm)kxYGc$6PRG-)!6L|ON@#E#u=DQA%^W&XH zh?#6$LI^r_#KGbln+iTVgg{j8u)^&%(G1sEhxH54mmUS%$)Qx~h+6-1rI`ztRcvWs zU~jF|+qZ93sYWQN^!am)SocyWzQav&5OSr38SN8Y-r1L)$Y^XmWxi* zl7$+Fne>X|a1)Ct>L#T=mk-7_>?tT-Qf(bTk&_J5>(*A58)+nh7}=m+RyJdG&ZuZu{5jdBVu9UL6cgEWDZnDF2i&H2cc>F(k$BE*7gD6>B^wV zJZw`dxj{+pf@qP0!x4AWQ*6fIs&wMS;#*Wl;`fY7bxwa@1dUP{Y~)!r zXl=duacpPj$}xgDx!DM9J+cv-<-y?IVj*KexyXqMzUCa&a1=(bod{YNgkEIHp&eNq z0h{Y7YnF`WCwZ$H#VQ`wWRNtfyIDmiCVoKbL9K~8X$Ur}m3vivvg@RG`Up5A7R$pa zxGv7*8#Jctre z1czo5b06`BmN^Rzm4d!m7iZzrmeZe)F3uN^ z-hJQ--jEGp0{1JY`mOwr>B+ZpCLBqNQ7N0rUm|dBA4b#Yk+0bqPgcy02>`riGC#Qj zV)=-=b55t<{R)?_?jEHFOICXq)wFV@SYebfr>lL5>W)W@cjWSvqb||Ga*uc{`+ZE& z`2L^_{Yv~+&^9e?O&3?(2&fv&vBsp4o&{hP=nHC3iXQc3^}_A1*>xyyRHfc;Rr`p* zN$0riEw6Tc;#;6|-*_U$q%AD_5xf1@?rS#G(w)^Vo4DI_$rZ@Sr<+<@AYG7BaXyOa zEYuU5bn3#Dl8{x*2B?2_`qd%g6Ua8#fGK&x4>JAh2_0sP|#AF6j&z73zGhLNF zit!11zPZOYiFFW5S(eO@BQrfO4+Uzw@?t@DdL*LuLJqKU?~Kp@vTLC|mi2h+)&QTS zm6g+)zeOuWp@#=AzB5ah{Lnm_9# z?(U3tcH#TQ0`NMX0Zo9Slt_g&g~wFnm0_*1G0Q56)5edCSoR~)p?J(aeLKSIeR(6r zLlZ163ph4nJ$e58IZJL6-qNWjhlhrPa*s%rPn)Gmm%~8W-~$w!#1}r(({Ud3C}}@F z?Yp&JdvdZ-(;_|3;`!=Ts`IV^KYvn%i|5UI+%a1XpbSX<3FOsgHEQM?Z$Hv=ov<8# zc6cmy?Go|hvP^YHmzcRO?ID7w!eFMne@*!2>O)xJxFcCi=QmU zZxgUAJT-rvotapLuIjiu@2&ipHJ#s(=G=PrN*6!_-PZv3i9{SL*p1mw2v_=ISzIYu zS;>fqCfeHCCb{zj+T=j>Nfy#pUZ^)SJKNhUm7Lj}rt6R8#mY7ay&IrhYOHoLwhUV2 z>gwtm25=WiCVJz!sz7ZAvSe>b2Y&$PZRP&KfPg@_os6uZjv%;$Sn4U1kK>Y;r*+GU zRz7>h=}erN%Z~s`a!=ivg+!+${s83sb_zwPgJQD z**sot8R?^R4Xr}vww4yq^}Lp$GIUMy7DBbvl!<3d3`Gd~?c4Cq=MCXPQ1)d=1KiMg zO-k7zz)GTRbArasr_DLZ#c?n6jR4KGFd2#$t!M zGYHe6P^hrV-EE}hZuWI4A=1mOC-+d|BME=jOX8n!+yCQT^6q*x;;H#_a6CpeWEov+ zdFNkW4L{3|nD*A)*S9VEIyky@B^B&v*C(7>7ve7g*9YtrmO1a3K*+{JQ3Dv&piM0X z)t|BWPp>unis!(cfaKP#`bcebRNNQhjDE;JpI8XkoQ!ZpF~7&~KfibRSt#NqPiY;})ZORw_wFrS`Jz5Nxd4jaH?w2erK|TFr*`?0QyYNy7s~zD zw8*0C&rOdE7uGBsWo2cyJpJy=JPg5oOExh<>VKb7|G>zi148G?yku~qEc5(}?=#>B zK#Po~eD|&zRy|B(3GM_WOhrOUsvbS{2UlcO4D5u72}|PNFbBVzNf=Rg2Y2&`CDTPK&4I=%sby7QSvZ;%R9&9g`eV8HWo%RH9gngLc?Pf{rl+t*Q5-fmXQnVTy!vv6b???hbaTj#!?$TBB{F|Pk=y>{)*nv> zjp516WhI(d>6`B5niJAd&Rthmw)iNe)lNtG*c3}P}yq_qs~m9 z>w;~K@x!QOl)&SYTUf5#)^|LhyntPX+wu-97Ndp0@ecwW6tJX6hj8t5v?Na|roZvv z(;i$aNzZv8$M$D-uspDWi!n1rVD^6bqLrMS<9%!b{`}8inw$nKz_#w7v!FKtz7Zam z);C64nv(|)!jRzJ#EL79-*+4SIhs6yYuxBVfchClf5QGQ)P_;>hq!_SE7%>OI|ciL zfp&homKG)ZinOkmJH>+y1ze*Vz6Ma!e|sJV3I=P@A~%E&sG1zfNu z{rKkPHZBl-;xmVr9v9W5+C=P$c?A9Gp~7goNzyzP z2mmzc%ly3IZ`uNIn@E}s*~UpaO&W1=-l{-?0}>_QjJM8YDIIweScAk4%z9^ls7tj9 zj)PIrLUuXK4-@(JPQ#@<%J{Ya$d`t^a^`!}@qDYkp6Is?@LlvlN16)T$*DO|RP!#;PQ6shm)og)4pyjlx`3<85K0mgMty z(Azt{zII8ER86#{rK%elUF-?zt5axrFMh1W>wg0G`(Km0T;)z=Q8q0t*Jsev9JT=p z?6*@q9xUSBr#iidQ|NX5jx%jxC zIejTtDA30kjSllNwormdFDS{8PZ?s4Z7HSW)eF|;TyBklHQj>mzxnq z(UcB8!*a40-55F)zj;ByH})kNU+*HwOqXS0^`+cG{ zRADGHjZ_bOd;Z&E+^cV^;EwZHWjOT()BE22C1~Pq031k)OWL2_>z5Z^7K|6yxGpb5 zQg4JF8gd$gVg@4OAKU9Mg_55k;m;Z2!M$zI!n$|+c5l^Ys#`e z1moYc;(reF1wq|Fwx^lW(zX8lIvYW`L9n0X!JTrG=j`_P zK`B5k5g(OWe(3+brB+{-4Db%jKq9D`SE|u3wVRP+t;)}=>9@ON7c8C7ar#FrRsccL}%+~ z!K4278zScMd93hZb#U19o6jtH!2%s8N7x(Ka*hZmSkTq@-3@@hqX<9lgem>)6k#$_?&b!8pK-y{9G!=+)E zUo-S(ozp+eNh`WJxuAk)70{lR!ohn3k(T&Ai0NdD-6HvJ7p`eZ~%|(_pT(XA_mB0LR#V%fl zwWe4xq&vm4lcYBd(=g=qP(1#K3>JsNqqn!0!Sx_7Q`uDZ!(&!M*;3z6SMB4wuEc# z&7+{22>bQ@Qh{*<-`nG1`Dy%rPYI=Dd{CvHle$|+P*HB~+{r6Z5*88XEF4-Vkose1&$`C%$1zRR;4w=)rt{y(R>rC2(Cg4J1(WpwZ)h zZv+KzcVl+8wJ#rMq|RJ;e1(Mv8`N>o@Dz>u^rzR5rxj}lshhljiNAzZ!BtG`e`$9A zdLP;pQRdoHl&h?r!2^UDc%Y=2cswsvq#I4}0NCX>PVt$6WY{tAuCT%_K-W2?oo za?z^bm(rO#Ay7{F7=PseD(Y+=eq0wD9ZNpLX=_Uib3MVpzkDK3%w;06qg?mT6_)Mc za~F73ReYq35y!pcuSgwtU;TKmO>W@IFFs7U{kQ!AmOf%xwxm{vCh@|eiMUwzuVrTg zUvx&g;(^zUkiM?tqbyISv%ZuY9MFFFL#pL}4A8r-PGT)w=t9`;qM0GpXw=pFNZ=TPlUIgUhO{} zyt#gyxtKpRW&VKyZyFMK?Y}LFK*I&b6N|A2XLrkQS1WSqm!gmR9BJGY#==u~e8cp% z!QAv*7VG-_lSPKvA2kM^|M4Y`=xBhqO<`Rx-a@zX@%{H0*0}USYyXc3KnZsJwr@9% zBe+j7vv~6FOXgXDm9ss+rg8lDWc&yVvSCb|Pn8@`3UR$`TnbLL zlbVZmy#JohEXBIE76%^vvIY2a;i{1LajE}4u<{bYURoOaQxNMff8b7adwhaL*a{1z zX_KlfiT{6mkKe)J;P&mo=$2OB#XpuJ?s6%1YUqvr+d%VhJu3aGIHF`_4rd#7O6bLP zzlTFS#g{xG$ou)$yizfUeW&6nn^g%pw&vO0D2a>U>Ms}<&6eW`s>%HHYx-+rc!33lC} zx4%L1ghJiHp`U57J?r~Rr6sxV$AyHhzFzomV+Fp_h7$4XG7|xViWMRWUEdIiO7Bl6 z^|vzA&vX9gBGrY#;`taa%}vF#*3*dNQ}kpJ{P0tpm#>>z+3_R9`afSxf&I+EVaB+< z{dHuuoiRMY#Bu+{{cncqu?^NG%#8o4Qe&Oc4Lqjv?XRHB0Vm?%(yz4sX!hID32Fkt ziHx6xQ?D2(Pt0wG{oRUu-iU={Eh{Tv4!I=1DF^9yZ`CaJvApQl{FQ4yHI@jQ@}(|pqS*E3y6=O8m)2^Ri{{&T8*SnwUIX% zrY!>4sfFqpAVVV-!2yw?O3V^Q%D*Cd zWPlaUj>6Wvss++HO^2%coCygGz)3>FKWLf;*Mq z2HF1TB6gr78KA+DNyM{b96(>q_E<(fJ1UaY#FppJ0mZx6%AmY;SzSKnO#L_yU=}Iq zS&s*zX@Y~1;+(d0F?n}3PZz`0*7i-50Ymy7HOpqnr(RDr&*ET0~p*-IYkxP>*ES%(@+c%(?YH4o>gC|{1gHG<=g(D(@2nsS*1FZyX z27Lv-p$wVQ38!6vzX0g3i@7AQazojwoG<6ng!eSY`~lH)1h95LunHp`bXaUGJ*JzV z=mvBFN1z*EhHHP)*HxpS=(ACKvQTM;z6T(2PV3k}bR^l~_+-N$z##jx*eqrukiy|} z0t0g`BO)+zLzqoeXv(DkARmK8KTmsR-~sS<8j+X7+o_=?ziN0&FzW$gT_ySljh|FO z?Zx5Pelq^1Xmu5%5fz91!fv{sA3Wwt)Q=vqxvl6wd+# zh13z9iDr9_!|29)G2d3Jqo5eVZu)x&+uzO6Zo~2#}wn^6*|&tYO$IsG?p3{YSnKo z?WbR5MLMeinTrbRwG^(b4$JI`FQd^YLr>!uKy73&nu_zP%7G1;xwNNXo7SuSBx20_ z3GqpXYkW=%%8N48Ee8#mNODCMAS>rPxw1v&uhaYIKRxJR3e4B}f~XdvkMz)A)T>WMb58(O-_a?FdU9X? zXO=5d9xkn$Yt+~`;xAE~!a z!K}jm`SY!igGqp^>&6XmoRS0{Pb-xJfZ-Z5=z9A?=f1uN{4f)z$JZ+~&y;{5Q>72r zW_O}6Nw8G5y`>Cmn+hyFl;7&!J6FWKyVvSff|&pLhY;&IKd%gsGO~bRJh~!Gmk{vq zPE?;1 zF_Tr=V1c565*|l5U%V*@HU_h~<$qVF`#oMZl&c&0G~HpViZ@aI+{$7iE8+9vfhlBY zXPHO7Gz!-{(oy}ajXarTBzhbA0MOVwUah9E&XqtIGIw9abw*5N*kD)3uWzP6ZZ)3- zILdkn2=t}65^RVHk2ek30Swy;px&k=CwH8`d_&!vpp*I04qkppc%)C;m5q>YxucZi zYfOUOArPXvvt>~+MHI;WV31TL*JE9Ru9b%Cq`%xszQ8d!aMf*XFUp?+=~QdYOqd=s z)z}~d2aBS}WN7+~tWWJ^!xvB-0AJz*cQi3zziT-t?}k%zFUyHR^IbAmCCMp9uvQl5 zT4sIGJB9`v2XZear)98WWGrud#UX4B!3@KD%wxx zcgWIj)v`a5?_(Gs>nFr)vIjJFk5Mo1n&#)9xmpXBa&dK1N8O_&A#JN`b@D0Z#%t*^ zNck$4twNoP)M~FSIS9aHH*eg;!X8^z&z-Y2tI>(C;xx!g)*WwZDxG8;GL$3xl#A|? z98zh$1TBy?nwKCub#pqvRhJE7G9O3jMHYTaa4q;fV#QOKwB4|`UZDbP&!iu~qK2e= zu3&nvYVBJYW-}B@{)(C~ZPy(!<2Bk-vyV5PdAz^>Xc`v^SHCqk4snte?>svykDFkn z?`n@cy5EL>!eaHMyafU3#!f*YJ;<>$K3sElvsFkLZfIxwrPhXvb>Xm9qNVc_&LHF% z&Xt%YH+$wJ&9p3ZuPvHdHq+Iw-gxUQ#$VDvDAGzSJJQxxsg+8t%w&c_wk%I97KSM& z8{ypETqb9%D|0j4fwvT*ut1^1bHf^FipVTtf7$)%mwq=-@R&7$FGK#_Jw zet?b|Hh$?Ee$bkc4E;&9U`GI|O1a}eV9JLm)KfL9Twmk9&JY~bYZjGu0ta-E?GW`8 z6d`PO+hs%3I?HVJ?T*jo>aGt1#-gBvy4$@JxqGe!W(H~%jJ8&4>oG?D4ep$dTrV{l zEGF_ZSE{eKYWjb!J+$QQDU9X)^bii6CR4I7#p~k>(QDT{`X(I@4)YV8W^8R%@MMjv z-iADxp}P0#)%@(o*N2(%IT3h7gkz5Oj;$#nb8SFO=?N#3J|YTAuLKhroXvHZ(7<^a z>OfJ-)O0#ZmeTrou(B=MKfhIzOb=j1aX-QA^)cCe2bWRVpbl z#FeZpsdbh?rK6`)i(|{ztk1iXE1E60)`_VjtINR6t-e~2J{wA5(E0#eBss^+$f(uE zrW&Kh_Eh6B54>HowX>7Al?l@cke1;(I4uJPL!b;!|EI)4lM!3Cd&`X4eT@+|g?cqw zj;p=di*F^nT2p)|Lnevk=E&`VP!=HKW_YV=+`np;%HjI676>ilXug^;zkBqEl z>Dih%Br0a6v7uVr6tlXIM!x8_7q^-PKs$wnJKk<*dK#Q-U54wErFzRr@-Kpb`e5{4 zYOMlB34QA!NuWuI|mAQG@ut6k06a6UW16g)Jgm z{!-GLYe}ow$}?T>mL#K7IPKQ6(kXizU&gj(nao7?ZKH-$KW-%T%p(y{_Zm z$t=k#+j@KW-DOrkq969|_mup%sT?0_Pi<7DB1~y&imZ%gqPSStJ)Fp-9&{k965tcZ z#eIl+CnL^H>0#;S7SyF(M^NVlCK^C1NlC3IaH>h$!9; zRtr*C8&9q@)G<-L0zV|cT-=zkUYTr>RNy4K5wY8IL7|q z>+j&wYDTBmddOsgPg%>C(~2G{s~AbV+MVy~bz+?Q0&?!XB(38rljKbzio@;HIr$lz znJlvfg*~8Ijf6y~I1 zwVi;4^9MpJCCOn<#4Y1vvU}i&lUAE#GvB1`5K)w^wx^W$03gw~%9isK2?oM+2NmEr5hCqrAg((;VYOvO4|J~RP7IFu_x4(|aE zj~NKj_ezM`Z~f)bfBuuy&LimIbm@BK2EFf5k7e9z8=B!_tCQ1m^;QLS_1e^9gs{Ly z>KFDl!krUUF^m+VBBHAM6Tu10TO|Q+aabMwAeEK#ywNx@l($HgLz@JR1~X7c_IY)T zdJ0(NkN2GlFZM>bzc90iW`pp+>_yCBDgyWYdqy%0T%={wLT)EX`Yt_D4ZaIqXB+4O zE3%B!)1orheb_x})mWH$x26YxYg>X6DGgX?wO5SLPdM`Q#V@?gYkhLwtxSHzp{Xc$BE9z~Nh!OjgnPYq3iYaq zxIvL=j=^Endds0rI6AM4S$5~2mrJQKyYM;_?mQIUoOVoGV~^FFj1`=A7R*ea-iOa( z-i~}SQ6Z$r8W5`aQi#b^fy7hbX-`j&Bv%y0+X(a~@y*Rm6td^iFKli10qu$5L*l|s zvdrU&+I1D$jW!@0)N(B`0iP-gGc-Hn)nSdXpl(WLrpWQYZYV`q%V48Fq_rSDeoR!R zlgc>+!C&&KT>XWyA1qC%PT2J;HlarHM zKk_R{hWS$Y;hd@P@}37bzzO77Zx><4RNB&%h+y7)+h)VukcIBe8)^sRy9I=Qk9uD} zAFL&P`0#wiYe!}au!F(Logr+5N1=n99f|SeHii@!%)`=9fvYMza(9X{B#kUi)~y1* zC-)SVR> z?ehae%ic9~`u}sok6fevqTgS*uHuR)>Y5YUrftr?X%(9!~%w~SOkz*pF-EaUV zJGE^a4b8>Hry3FT4`1fantr zEq#vW?kK|1a>;~bj&*ToqmbFkq6ZD)(%U-Q&l10s%pg7@J->0jv%{`ly|=yH+1iRC z%KPb4u9&0h?)K(xmNGNXoVUP-RVm|-z0CQ;m`LvK9w5EJvbR#a5>%JX11=V~#v+_8 zj=a98%1hmKa}vrdP7D!OnRLDG#5p)-ohLrmzTmQlzcQ(%Q&sDR%Si&b|2wk?t7G|8 zwoUul;nb>>wnrHhwjB+V6&uXVTTyV*1HSw=YS0*`h=zeO&ICM3*sq(Ck7#b)$E&dK zaUK{Ki)A@K4tbZ+ip1f{YG#q&BB^Tf^3LEh^c(O*0Hi>x3;=$ASB!ta3w!TcA0Qys z_G1r~CaZDTuPtZzE}EjCh1qr&e5J|pq4L$t7{&mSwUxFelldk_7Uh+>Mr9O=G)y5SYf(%_n$o#Qw*Z&u__Vz6)5ClC`lzfn!5s&aVTaYn z<6n?yyaR4yfGei7YfM3pe?Mq`j}mmqrWR+8wKd)!u8D|?w0DxXeau`?@bZDr|L{S& zfs*ja)~>IXASw!qf_;qm-ZFr0mm*3Ok+B|a13^`^?9u{aDn^@0C<`WzYy!KDz(Kt? z5^%eLhp@2T@Hh;V6+>E<+NnsWd*L#sBnP_)QPk*cDHwznKkn0 z;)l0;h`dEU;Gp6=ho-+|W-b*|tw22y>~P1gx#*N}W7=vT$doU7iNnt(ovEfOA7xz( zXoKCFL<2-h2b36~c1G2-Y=unK6)ATE9$@wQHGN@o4))U0^oU!$;JP!=yh~3{ zpFvRWP%2&?La?+OQdppYFrh$jPzwj9iNmrVCO(vy2USP8aw@IQSA-}3z@U=HbFeB^ zJMP_evRkB99pmh;vEkP~SnnZhQ`X#IJV=lx5swDK&n5eQt}h_uy{@)OA#r<3gcsZb9+!1@|9rKg6`pfiwdh3XC&w}V`EgPrjc?a# zR+Ea1R~)$R?!_?jx#N`w1F10L0c>n+)!aq_UW#fJ)?4XZB|4;VaCfQT^~((=MrG;h zhK6Ve3$mSyY6!TFj`~{X>1qx>xacSRoaGx1TRnHW}_5Y?Mra9E8NFWx17*4MhFQr0v$C;&kTt5bQ$cEy-o(h{O7jFwi_QE*p#)uAvuR z6^$UKNnB2~S^+toEjWo$j~#t!cJ}x2xV9C2A1*g03f&JUV2y%6Dos{&S;M@NQv7-- zDWfk!vo?Bm9w3N|AEl84AwjNg@~5)tM-k?>vsdVVng7#%+YjgU-+w-I6 zHo{CA`PJmc$i6XmuKn-)iU3gABle7Rm?`>f=%BP-!ySo@OFeIiKSn3|4bK8Pqdf!+<(Ufl%V(F4^VxTvYVvv@cMAm2By0 zuMZq|jskTBvuUpk0e^`BvwkxzkWC$s;2?B&?*wQ1va@Fd-W7XVV+f|!*e8;6Ck6?5 zb*wVA3%O^|?qF~4#Bs?I^WyBHCNzEU=Dk-@3?|f&U5PTw$0m&sY2&EpwsI+=TZAl+ zA1gXj$m}mGCcx)!52vwIvf6(&XVoyc%Q`YLRtjxXtE?EcUCRGjV`iqJGM;0SuY4oL zl9(?JZ=^`kH*lf7wX;=f5FHH-=srC=MWcyQPZaE+o^X6?Rn!qxD$zJBlM^9YWFUNl zNW&N;a*a@Rxo=?iKgxzbc9O)?YeB_I1@<3TarT+gI|Y*G&ymgd{SwcSbI8m|C}pm*xlxlJVEF480X0Kc$H49bgU?4O;lh`6rZ zSie(NQFeTMG~qe+86j!7#XNHVG^aSAIuw$|qu@kA-%bP~d6S$Qn+s4e0)f3s5s{H{(dNXCI!||pQiQ35-1UX|M zCfymNs%>_(Kq*r@yZQ2^KZM~Pf*BGH(#+SdkCc6>IDk(*RdYNl_J6V>pR44s`t?DN zPWSuNdMq#WF?m#pYmhWYqQKk3xLyd3K7)7n_LZ8VsrsQ6B=gB9#xZN16z zrs0;Bmil@=`Yi3x8KOj?KpdpVXWX@;GxD$6JgBM;0OTNFndu%TQ}4(~2EBpcDF1m_ z-sUY&Vi!QF8d$8MrT9DO{9$MD0OsK&bB;%Q{l+d;-6Ya66kj*>;Z&NW5b9NX=HGx@ zg9R+^n=vW0*Z+R>U+x2ZrUdq3u}s<(fb?IlRuAq18OOs42!4I^-+y%@ff8%-Q{4ac zju@9ruj!Hy*sIQzpTWY9HhIfeZoeP@QD+W@a<4R*^7a)5{jYr&fe6$vUE)fw`g5w@ zT*~&AQR(phe3h#vGakefG9q4V|2-rBJ{OTT8iaWDCS-8`$t(ID7efWsPl>$$f6mP` z7z&oDh$7Ut2>k64W4s#Igbb`&cn9na-1;leh->9K utT5cb4=i)PZ9KmQdgB%@Z!qo_|6w0|O)u_g!@oNWK;Y@>=d#Wzp$P!?V)5hv literal 137460 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 Date: Sat, 29 Oct 2016 10:31:06 +0800 Subject: [PATCH 075/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collectiontutorial/maptutorial/HashMapExample.java | 8 ++++++++ .../collectiontutorial/maptutorial/HashtableExample.java | 8 ++++++++ .../maptutorial/LinkedHashMapExample.java | 8 ++++++++ .../collectiontutorial/maptutorial/SortedMapExample.java | 8 ++++++++ .../collectiontutorial/maptutorial/TreeMapExample.java | 8 ++++++++ .../maptutorial/WeakHashMapExample.java | 8 ++++++++ 6 files changed, 48 insertions(+) create mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java create mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashtableExample.java create mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/LinkedHashMapExample.java create mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/SortedMapExample.java create mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java create mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/WeakHashMapExample.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java new file mode 100644 index 0000000..d726520 --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java @@ -0,0 +1,8 @@ +package cn.byhieg.collectiontutorial.maptutorial; + +/** + * Created by shiqifeng on 2017/2/24. + * Mail byhieg@gmail.com + */ +public class HashMapExample { +} diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashtableExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashtableExample.java new file mode 100644 index 0000000..4c47e16 --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashtableExample.java @@ -0,0 +1,8 @@ +package cn.byhieg.collectiontutorial.maptutorial; + +/** + * Created by shiqifeng on 2017/2/24. + * Mail byhieg@gmail.com + */ +public class HashtableExample { +} diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/LinkedHashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/LinkedHashMapExample.java new file mode 100644 index 0000000..78e6d1c --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/LinkedHashMapExample.java @@ -0,0 +1,8 @@ +package cn.byhieg.collectiontutorial.maptutorial; + +/** + * Created by shiqifeng on 2017/2/24. + * Mail byhieg@gmail.com + */ +public class LinkedHashMapExample { +} diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/SortedMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/SortedMapExample.java new file mode 100644 index 0000000..5a89940 --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/SortedMapExample.java @@ -0,0 +1,8 @@ +package cn.byhieg.collectiontutorial.maptutorial; + +/** + * Created by shiqifeng on 2017/2/24. + * Mail byhieg@gmail.com + */ +public class SortedMapExample { +} diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java new file mode 100644 index 0000000..8b9c342 --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java @@ -0,0 +1,8 @@ +package cn.byhieg.collectiontutorial.maptutorial; + +/** + * Created by shiqifeng on 2017/2/24. + * Mail byhieg@gmail.com + */ +public class TreeMapExample { +} diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/WeakHashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/WeakHashMapExample.java new file mode 100644 index 0000000..82e2a9d --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/WeakHashMapExample.java @@ -0,0 +1,8 @@ +package cn.byhieg.collectiontutorial.maptutorial; + +/** + * Created by shiqifeng on 2017/2/24. + * Mail byhieg@gmail.com + */ +public class WeakHashMapExample { +} From c6cef32df18912ec87d0861ad356219e0b0b1b6b Mon Sep 17 00:00:00 2001 From: byhieg Date: Thu, 27 Oct 2016 16:12:02 +0800 Subject: [PATCH 076/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collectiontutorial/maptutorial/HashMapExample.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java index d726520..7fd43f7 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java @@ -5,4 +5,12 @@ * Mail byhieg@gmail.com */ public class HashMapExample { + + + public static void main(String[] args) { + + + } + + } From 43cc0cd99374d5f377dbadc980242f79895f8d18 Mon Sep 17 00:00:00 2001 From: byhieg Date: Fri, 24 Feb 2017 16:52:39 +0800 Subject: [PATCH 077/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Hashmap=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../maptutorial/HashMapExample.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java index 7fd43f7..0c68864 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java @@ -1,16 +1,36 @@ package cn.byhieg.collectiontutorial.maptutorial; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + /** * Created by shiqifeng on 2017/2/24. * Mail byhieg@gmail.com */ public class HashMapExample { - - public static void main(String[] args) { + public Map insertMap(){ + HashMap maps = new HashMap<>(10); + for (int i = 0 ; i < 10 ;i++) { + maps.put(i + "", i + ""); + } + return maps; + } + public void getValue(Map maps,String key) { + System.out.println(maps.get(key)); } + public void getAllKeyAndValue(Map maps) { + Iterator iterator = maps.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + System.out.println(entry.getKey()); + System.out.println(entry.getValue()); + } + } + } From b63a43ea53f273452d3ff6118de34007e6dd96ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Fri, 21 Oct 2016 13:57:18 +0800 Subject: [PATCH 078/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0HashMap=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../maptutorial/HashMapExample.java | 4 ++-- .../HashMapExampleTest.java | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/test/java/cn/byhieg/collectiontutorialtest/HashMapExampleTest.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java index 0c68864..f731024 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java @@ -28,8 +28,8 @@ public void getAllKeyAndValue(Map maps) { Iterator iterator = maps.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); - System.out.println(entry.getKey()); - System.out.println(entry.getValue()); + System.out.print("Key = " + entry.getKey()); + System.out.println(" value = " + entry.getValue()); } } diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/HashMapExampleTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/HashMapExampleTest.java new file mode 100644 index 0000000..bdbb2d7 --- /dev/null +++ b/src/test/java/cn/byhieg/collectiontutorialtest/HashMapExampleTest.java @@ -0,0 +1,24 @@ +package cn.byhieg.collectiontutorialtest; + +import cn.byhieg.collectiontutorial.maptutorial.HashMapExample; +import junit.framework.TestCase; + +import java.util.Map; + +/** + * Created by byhieg on 17/2/25. + * Mail to byhieg@gmail.com + */ +public class HashMapExampleTest extends TestCase { + HashMapExample example = new HashMapExample(); + public void testInsertMap() throws Exception { + Map maps = example.insertMap(); + example.getAllKeyAndValue(maps); + } + + public void testGetValue() throws Exception { + + } + + +} \ No newline at end of file From 8b04eeb60cd9e53989fd9c985c249a5286258c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Thu, 13 Oct 2016 14:21:43 +0800 Subject: [PATCH 079/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0HashMap=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../maptutorial/HashMapExample.java | 2 +- .../maptutorial/HashtableExample.java | 8 ------- .../maptutorial/LinkedHashMapExample.java | 23 +++++++++++++++++++ .../maptutorial/SortedMapExample.java | 8 ------- .../LinkedHashMapExampleTest.java | 19 +++++++++++++++ 5 files changed, 43 insertions(+), 17 deletions(-) delete mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashtableExample.java delete mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/SortedMapExample.java create mode 100644 src/test/java/cn/byhieg/collectiontutorialtest/LinkedHashMapExampleTest.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java index f731024..e3a51ac 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java @@ -11,7 +11,7 @@ public class HashMapExample { public Map insertMap(){ - HashMap maps = new HashMap<>(10); + HashMap maps = new HashMap<>(1); for (int i = 0 ; i < 10 ;i++) { maps.put(i + "", i + ""); } diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashtableExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashtableExample.java deleted file mode 100644 index 4c47e16..0000000 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashtableExample.java +++ /dev/null @@ -1,8 +0,0 @@ -package cn.byhieg.collectiontutorial.maptutorial; - -/** - * Created by shiqifeng on 2017/2/24. - * Mail byhieg@gmail.com - */ -public class HashtableExample { -} diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/LinkedHashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/LinkedHashMapExample.java index 78e6d1c..f108797 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/LinkedHashMapExample.java +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/LinkedHashMapExample.java @@ -1,8 +1,31 @@ package cn.byhieg.collectiontutorial.maptutorial; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; + /** * Created by shiqifeng on 2017/2/24. * Mail byhieg@gmail.com */ public class LinkedHashMapExample { + + public LinkedHashMap insertMap(){ + LinkedHashMap maps = new LinkedHashMap<>(); + for (int i = 0 ; i < 10;i++) { + maps.put(i + "", 10 * i + ""); + } + + return maps; + } + + + public void printMaps(LinkedHashMap maps) { + Iterator iterator = maps.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + System.out.print("key = " + entry.getKey()); + System.out.println(" value = " + entry.getValue()); + } + } } diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/SortedMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/SortedMapExample.java deleted file mode 100644 index 5a89940..0000000 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/SortedMapExample.java +++ /dev/null @@ -1,8 +0,0 @@ -package cn.byhieg.collectiontutorial.maptutorial; - -/** - * Created by shiqifeng on 2017/2/24. - * Mail byhieg@gmail.com - */ -public class SortedMapExample { -} diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/LinkedHashMapExampleTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/LinkedHashMapExampleTest.java new file mode 100644 index 0000000..6a0a03e --- /dev/null +++ b/src/test/java/cn/byhieg/collectiontutorialtest/LinkedHashMapExampleTest.java @@ -0,0 +1,19 @@ +package cn.byhieg.collectiontutorialtest; + +import cn.byhieg.collectiontutorial.maptutorial.LinkedHashMapExample; +import junit.framework.TestCase; + +import java.util.LinkedHashMap; + +/** + * Created by byhieg on 17/2/25. + * Mail to byhieg@gmail.com + */ +public class LinkedHashMapExampleTest extends TestCase { + LinkedHashMapExample example = new LinkedHashMapExample(); + public void testInsertMap() throws Exception { + LinkedHashMap map = example.insertMap(); + example.printMaps(map); + } + +} \ No newline at end of file From 1a8c59001504b3431b0e9b1e294a5572e4a42647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Thu, 20 Oct 2016 14:52:05 +0800 Subject: [PATCH 080/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0TreeMap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../maptutorial/TreeMapExample.java | 79 +++++++++++++++++++ .../LinkedHashMapExampleTest.java | 2 +- .../TreeMapExampleTest.java | 45 +++++++++++ 3 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 src/test/java/cn/byhieg/collectiontutorialtest/TreeMapExampleTest.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java index 8b9c342..b791cbc 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java @@ -1,8 +1,87 @@ package cn.byhieg.collectiontutorial.maptutorial; +import apple.laf.JRSUIUtils; + +import java.util.Iterator; +import java.util.Map; +import java.util.SortedMap; +import java.util.TreeMap; + /** * Created by shiqifeng on 2017/2/24. * Mail byhieg@gmail.com */ public class TreeMapExample { + + public TreeMap insertMap(){ + TreeMap maps = new TreeMap<>(); + + for (int i = 0 ; i < 10;i++) { + maps.put(i + "", 10 * i + ""); + } + + return maps; + } + + public void getSmallestEntry(TreeMap maps){ + Map.Entry entry = maps.firstEntry(); + System.out.println("最小的Entry如下"); + System.out.print("key = " + entry.getKey()); + System.out.println(" value = " + entry.getValue()); + } + + public void getLargestEntry(TreeMap maps){ + Map.Entry entry = maps.lastEntry(); + System.out.println("最大的Entry如下"); + System.out.print("key = " + entry.getKey()); + System.out.println(" value = " + entry.getValue()); + } + + + public void getHigherEntry(TreeMap maps,String key){ + Map.Entry entry = maps.higherEntry(key); + System.out.println("后一个的Entry如下"); + System.out.print("key = " + entry.getKey()); + System.out.println(" value = " + entry.getValue()); + } + + public void getLowestEntry(TreeMap maps, String key) { + Map.Entry entry = maps.lowerEntry(key); + System.out.println("前一个的Entry如下"); + System.out.print("key = " + entry.getKey()); + System.out.println(" value = " + entry.getValue()); + } + + public void getRangeMap(TreeMap maps, String firstKey, String lastKey) { + SortedMap subMaps = maps.subMap(firstKey, lastKey); + Iterator iterator = subMaps.entrySet().iterator(); + System.out.println("子Map如下"); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + System.out.print("key = " + entry.getKey()); + System.out.println(" value = " + entry.getValue()); + } + } + + public void getHeadMap(TreeMap maps, String firstKey,boolean isInclusive) { + SortedMap subMaps = maps.headMap(firstKey, isInclusive); + Iterator iterator = subMaps.entrySet().iterator(); + System.out.println(firstKey + "以前" + "所有的Map如下"); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + System.out.print("key = " + entry.getKey()); + System.out.println(" value = " + entry.getValue()); + } + } + + public void getTailMap(TreeMap maps, String firstKey,boolean isInclusive) { + SortedMap subMaps = maps.headMap(firstKey, isInclusive); + Iterator iterator = subMaps.entrySet().iterator(); + System.out.println(firstKey + "以后" + "所有的Map如下"); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + System.out.print("key = " + entry.getKey()); + System.out.println(" value = " + entry.getValue()); + } + } } diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/LinkedHashMapExampleTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/LinkedHashMapExampleTest.java index 6a0a03e..47f0085 100644 --- a/src/test/java/cn/byhieg/collectiontutorialtest/LinkedHashMapExampleTest.java +++ b/src/test/java/cn/byhieg/collectiontutorialtest/LinkedHashMapExampleTest.java @@ -15,5 +15,5 @@ public void testInsertMap() throws Exception { LinkedHashMap map = example.insertMap(); example.printMaps(map); } - + } \ No newline at end of file diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/TreeMapExampleTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/TreeMapExampleTest.java new file mode 100644 index 0000000..0fdd004 --- /dev/null +++ b/src/test/java/cn/byhieg/collectiontutorialtest/TreeMapExampleTest.java @@ -0,0 +1,45 @@ +package cn.byhieg.collectiontutorialtest; + +import cn.byhieg.collectiontutorial.maptutorial.TreeMapExample; +import junit.framework.TestCase; + +import java.util.TreeMap; + +/** + * Created by byhieg on 17/2/25. + * Mail to byhieg@gmail.com + */ +public class TreeMapExampleTest extends TestCase { + TreeMapExample example = new TreeMapExample(); + TreeMap maps = example.insertMap(); + + public void testGetSmallestEntry() throws Exception { + example.getSmallestEntry(maps); + } + + public void testGetLargestEntry() throws Exception { + example.getLargestEntry(maps); + } + + public void testGetHigherEntry() throws Exception { + example.getHigherEntry(maps,"2"); + } + + public void testGetLowestEntry() throws Exception { + example.getLowestEntry(maps,"2"); + } + + public void testGetRangeMap() throws Exception { + example.getRangeMap(maps,"2","8"); + + } + + public void testGetHeadMap() throws Exception { + example.getHeadMap(maps,"4",true); + } + + public void testGetTailMap() throws Exception { + example.getTailMap(maps,"7",true); + } + +} \ No newline at end of file From 3f9cfef6b4c066f29011efb7dff66a0613e67e52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sat, 25 Feb 2017 15:15:23 +0800 Subject: [PATCH 081/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collectiontutorial/maptutorial/README.md | 70 +++++++++++++++++++ .../maptutorial/WeakHashMapExample.java | 8 --- 2 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/README.md delete mode 100644 src/main/java/cn/byhieg/collectiontutorial/maptutorial/WeakHashMapExample.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/README.md b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/README.md new file mode 100644 index 0000000..634aa89 --- /dev/null +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/README.md @@ -0,0 +1,70 @@ +# 集合Map的讲解 + +Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。Map接口定义了如下常用的方法: + +1. 1void clear()1:删除Map中所以键值对。 +2. 1boolean containsKey(Object key)1:查询Map中是否包含指定key,如果包含则返回true。 +3. `boolean containsValue(Object value)`:查询Map中是否包含指定value,如果包含则返回true。 +4. `Set entrySet()`:返回Map中所包含的键值对所组成的Set集合,每个集合元素都是Map.Entry对象(Entry是Map的内部类)。 +5. `Object get(Object key)`:返回指定key所对应的value,如Map中不包含key则返回null。 +6. `boolean isEmpty()`:查询Map是否为空,如果空则返回true。 +7. `Set keySet()`:返回该Map中所有key所组成的set集合。 +8. `Object put(Object key,Object value)`:添加一个键值对,如果已有一个相同的key值则新的键值对覆盖旧的键值对。 +9. `void putAll(Map m)`:将指定Map中的键值对复制到Map中。 +10. `Object remove(Object key)`:删除指定key所对应的键值对,返回可以所关联的value,如果key不存在,返回null。 +11. `int size()`:返回该Map里的键值对的个数。 +12. `Collection values()`:返回该Map里所有value组成的Collection。 + +Map中包含一个内部类:Entry。该类封装了一个键值对,它包含了三个方法: + +1. Object getKey():返回该Entry里包含的key值。 +2. Object getValeu():返回该Entry里包含的value值。 +3. Object setValue(V value):设置该Entry里包含的value值,并返回新设置的value值。 + + +## HashMap和Hashtable实现类 +### HashMap与HashTable的区别: + +- 同步性:Hashtable是同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的。而HashMap则是异步的,因此 HashMap中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用HashMap是一个很好的选择,这 样可以避免由于同步带来的不必要的性能开销,从而提高效率。 +- 值:HashMap可以让你将空值作为一个表的条目的key或value,但是Hashtable是不能放入空值的。HashMap最多只有一个key值为null,但可以有无数多个value值为null。 + + +### 两者的性能 + +HashMap的性能最好,HashTable的性能是最差(因为它是同步的) + +### 注意 +- 用作key的对象必须实现hashCode和equals方法。 +- 不能保证其中的键值对的顺序 +- 尽量不要使用可变对象作为它们的key值。 + +## LinkedHashMap + +它的父类是HashMap,使用双向链表来维护键值对的次序,迭代顺序与键值对的插入顺序保持一致。LinkedHashMap需要维护元素的插入顺序,so性能略低于HashMap,但在迭代访问元素时有很好的性能,因为它是以链表来维护内部顺序。 + + +## TreeMap + +Map接口派生了一个SortMap子接口,SortMap的实现类为TreeMap。TreeMap也是基于红黑树对所有的key进行排序,有两种排序 方式:自然排序和定制排序。Treemap的key以TreeSet的形式存储,对key的要求与TreeSet对元素的要求基本一致。 + +1. `Map.Entry firstEntry()`:返回最小key所对应的键值对,如Map为空,则返回null。 +2. `Object firstKey()`:返回最小key,如果为空,则返回null。 +3. `Map.Entry lastEntry()`:返回最大key所对应的键值对,如Map为空,则返回null。 +4. `Object lastKey()`:返回最大key,如果为空,则返回null。 +5. `Map.Entry higherEntry(Object key)`:返回位于key后一位的键值对,如果为空,则返回null。 +6. `Map.Entry lowerEntry(Object key)`:返回位于key前一位的键值对,如果为空,则返回null。 +7. `Object lowerKey(Object key)`:返回位于key前一位key值,如果为空,则返回null。 +8. `NavigableMap subMap(Object fromKey,boolean fromlnclusive,Object toKey,boolean toInciusive)`:返回该Map的子Map,其key范围从fromKey到toKey。 +9. `SortMap subMap(Object fromKey,Object toKey )`;返回该Map的子Map,其key范围从fromkey(包括)到tokey(不包括)。 +10. `SortMap tailMap(Object fromkey ,boolean inclusive)`:返回该Map的子Map,其key范围大于fromkey(是否包括取决于第二个参数)的所有key。 +11. `SortMap headMap(Object tokey ,boolean inclusive)`:返回该Map的子Map,其key范围小于tokey(是否包括取决于第二个参数)的所有key。 + + +## WeakHashMap +WeakHashMap与HashMap的用法基本相同,区别在于:后者的key保留对象的强引用,即只要HashMap对象不被销毁,其对象所有key所引用的对象不会被垃圾回收,HashMap也不会自动删除这些key所对应的键值对对象。但WeakHashMap的key所引用的对象没有被其他强引 用变量所引用,则这些key所引用的对象可能被回收。WeakHashMap中的每个key对象保存了实际对象的弱引用,当回收了该key所对应的实际对象后,WeakHashMap会自动删除该key所对应的键值对。 + +## IdentityHashMap + +IdentityHashMap与HashMap基本相似,只是当两个key严格相等时,即key1==key2时,它才认为两个key是相等的 。IdentityHashMap也允许使用null,但不保证键值对之间的顺序。 + + diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/WeakHashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/WeakHashMapExample.java deleted file mode 100644 index 82e2a9d..0000000 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/WeakHashMapExample.java +++ /dev/null @@ -1,8 +0,0 @@ -package cn.byhieg.collectiontutorial.maptutorial; - -/** - * Created by shiqifeng on 2017/2/24. - * Mail byhieg@gmail.com - */ -public class WeakHashMapExample { -} From 8aa757fca7344cf2a678a997587965698cb94425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sat, 25 Feb 2017 15:18:09 +0800 Subject: [PATCH 082/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/byhieg/collectiontutorial/maptutorial/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/README.md b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/README.md index 634aa89..20e05f9 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/README.md +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/README.md @@ -2,8 +2,8 @@ Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。Map接口定义了如下常用的方法: -1. 1void clear()1:删除Map中所以键值对。 -2. 1boolean containsKey(Object key)1:查询Map中是否包含指定key,如果包含则返回true。 +1. `void clear()`:删除Map中所以键值对。 +2. `boolean containsKey(Object key)`:查询Map中是否包含指定key,如果包含则返回true。 3. `boolean containsValue(Object value)`:查询Map中是否包含指定value,如果包含则返回true。 4. `Set entrySet()`:返回Map中所包含的键值对所组成的Set集合,每个集合元素都是Map.Entry对象(Entry是Map的内部类)。 5. `Object get(Object key)`:返回指定key所对应的value,如Map中不包含key则返回null。 From ccb8dc9603c237c9f31131a44eaa320335b4487d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sat, 25 Feb 2017 15:25:11 +0800 Subject: [PATCH 083/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JavaTutorial\347\233\256\345\275\225.jpg" | Bin 156385 -> 176782 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git "a/images/JavaTutorial\347\233\256\345\275\225.jpg" "b/images/JavaTutorial\347\233\256\345\275\225.jpg" index 7d8abf1584ae2b9f01de6eb643f45802767c0a03..e6c8c449c4b3bcaa7849c1ab03bdb7fab734de37 100644 GIT binary patch literal 176782 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%0An0+`s3Rp&Fn9_;C(W6n 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%0D%P<4yJ<=UK=k&*!1<#% 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 }?db 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%0D2iy_L4Xq|iC(wVnz7ZhnpJYT5?w?y&b@7xl& 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

LSMW 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%0DXZ1V*tA#hnCM@5n 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 From 2fe46811bc03811270a289eab3c6c32705691669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Sat, 25 Feb 2017 15:27:20 +0800 Subject: [PATCH 084/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c107722..49941a0 100644 --- a/README.md +++ b/README.md @@ -55,18 +55,29 @@ Java通过反射获取如下内容: - 数组 ## CollectionTutorial内容说明 -在源码路径下`cn.byhieg.collectiontutorial.listtutorial`中放置的是Java集合类的代码和测试例子。在每一个包里面,都有一个ReadMe来说明该章的知识点。 -listtutorial中的知识点有 +在源码路径下`cn.byhieg.collectiontutorial`中放置的是Java集合类的代码和测试例子。在每一个包里面,都有一个ReadMe来说明该章的知识点。 +ListTutorial中的知识点有 - ArrayList的使用 - 实现一个简单的ArrayList +MapTutorial中的知识点有 + +- HashMap的使用 +- TreeMap的使用 +- LinkedHashMap的使用 + + + ## AnnotationTutorial内容说明 在源码路径下`cn.byhieg.annotationtutorial`中放置的是Java注解类的代码和测试例子。在每一个包里面,都有一个ReadMe来说明该章的知识点。 +## IOTutorial内容说明 + +在源码路径下`cn.byhieg.iotutorial`中放置的是Java io类的代码和测试例子。在每一个包里面,都有一个ReadMe来说明该章的知识点。 From 11d23bf86a59611137cee6fba3578fc6d6093faf Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 14 Mar 2017 10:45:52 +0800 Subject: [PATCH 085/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E7=9A=84=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../singleton/SimpleSingleton.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/singleton/SimpleSingleton.java diff --git a/src/main/java/cn/byhieg/designpatterntutorial/singleton/SimpleSingleton.java b/src/main/java/cn/byhieg/designpatterntutorial/singleton/SimpleSingleton.java new file mode 100644 index 0000000..78cd486 --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/singleton/SimpleSingleton.java @@ -0,0 +1,22 @@ +package cn.byhieg.designpatterntutorial.singleton; + +/** + * 该类线程不安全,是延迟加载的懒汉模式 + * Created by shiqifeng on 2017/3/14. + * Mail byhieg@gmail.com + */ +public class SimpleSingleton { + + private static SimpleSingleton simpleSingleton; + + private SimpleSingleton(){ + + } + + public static SimpleSingleton getInstance(){ + if (simpleSingleton == null) { + simpleSingleton = new SimpleSingleton(); + } + return simpleSingleton; + } +} From b11ae9167995a2740367f9738058b115173ad7fb Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 14 Mar 2017 11:26:39 +0800 Subject: [PATCH 086/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E7=9A=84=E6=87=92=E6=B1=89=E5=86=99=E6=B3=95?= =?UTF-8?q?=E7=9A=84=E5=8D=95=E4=BE=8B=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../singleton/DCLSingleton.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/singleton/DCLSingleton.java diff --git a/src/main/java/cn/byhieg/designpatterntutorial/singleton/DCLSingleton.java b/src/main/java/cn/byhieg/designpatterntutorial/singleton/DCLSingleton.java new file mode 100644 index 0000000..d39d86e --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/singleton/DCLSingleton.java @@ -0,0 +1,26 @@ +package cn.byhieg.designpatterntutorial.singleton; + +/** + * Created by shiqifeng on 2017/3/14. + * Mail byhieg@gmail.com + */ +public class DCLSingleton { + + private static volatile DCLSingleton singleton; + + private DCLSingleton(){ + + } + + public static DCLSingleton getSingleton(){ + if (singleton == null) { + synchronized (DCLSingleton.class) { + if (singleton == null) { + singleton = new DCLSingleton(); + } + } + } + return singleton; + } + +} From 4aa73fc5ba62c0e2482160006a67e237ffda3d53 Mon Sep 17 00:00:00 2001 From: byhieg Date: Wed, 15 Mar 2017 16:19:52 +0800 Subject: [PATCH 087/118] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=EF=BC=8C=E4=BD=86=E6=98=AF=E5=9B=9E=E8=B0=83=E7=9A=84=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E6=9C=89=E4=BA=9B=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../singleton/DCLSingleton.java | 2 ++ .../singleton/EnumSingleton.java | 14 +++++++++++++ .../singleton/HungrySingleton.java | 17 ++++++++++++++++ .../singleton/SimpleSingleton.java | 6 +++++- .../singleton/StaticSingleton.java | 20 +++++++++++++++++++ 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/singleton/EnumSingleton.java create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/singleton/HungrySingleton.java create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/singleton/StaticSingleton.java diff --git a/src/main/java/cn/byhieg/designpatterntutorial/singleton/DCLSingleton.java b/src/main/java/cn/byhieg/designpatterntutorial/singleton/DCLSingleton.java index d39d86e..ba45d43 100644 --- a/src/main/java/cn/byhieg/designpatterntutorial/singleton/DCLSingleton.java +++ b/src/main/java/cn/byhieg/designpatterntutorial/singleton/DCLSingleton.java @@ -23,4 +23,6 @@ public static DCLSingleton getSingleton(){ return singleton; } + + } diff --git a/src/main/java/cn/byhieg/designpatterntutorial/singleton/EnumSingleton.java b/src/main/java/cn/byhieg/designpatterntutorial/singleton/EnumSingleton.java new file mode 100644 index 0000000..86c24cf --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/singleton/EnumSingleton.java @@ -0,0 +1,14 @@ +package cn.byhieg.designpatterntutorial.singleton; + +/** + * Created by shiqifeng on 2017/3/14. + * Mail byhieg@gmail.com + */ +public enum EnumSingleton { + SINGLETON; + + + public void doSometings(){ + + } +} diff --git a/src/main/java/cn/byhieg/designpatterntutorial/singleton/HungrySingleton.java b/src/main/java/cn/byhieg/designpatterntutorial/singleton/HungrySingleton.java new file mode 100644 index 0000000..d3ac705 --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/singleton/HungrySingleton.java @@ -0,0 +1,17 @@ +package cn.byhieg.designpatterntutorial.singleton; + +/** + * Created by shiqifeng on 2017/3/14. + * Mail byhieg@gmail.com + */ +public class HungrySingleton { + private static final HungrySingleton singleton = new HungrySingleton(); + + private HungrySingleton(){ + + } + +// public static HungrySingleton getSingleton(){ +// return singleton; +// } +} diff --git a/src/main/java/cn/byhieg/designpatterntutorial/singleton/SimpleSingleton.java b/src/main/java/cn/byhieg/designpatterntutorial/singleton/SimpleSingleton.java index 78cd486..fedad66 100644 --- a/src/main/java/cn/byhieg/designpatterntutorial/singleton/SimpleSingleton.java +++ b/src/main/java/cn/byhieg/designpatterntutorial/singleton/SimpleSingleton.java @@ -1,11 +1,13 @@ package cn.byhieg.designpatterntutorial.singleton; +import java.io.Serializable; + /** * 该类线程不安全,是延迟加载的懒汉模式 * Created by shiqifeng on 2017/3/14. * Mail byhieg@gmail.com */ -public class SimpleSingleton { +public class SimpleSingleton implements Serializable { private static SimpleSingleton simpleSingleton; @@ -19,4 +21,6 @@ public static SimpleSingleton getInstance(){ } return simpleSingleton; } + + } diff --git a/src/main/java/cn/byhieg/designpatterntutorial/singleton/StaticSingleton.java b/src/main/java/cn/byhieg/designpatterntutorial/singleton/StaticSingleton.java new file mode 100644 index 0000000..8a2ee20 --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/singleton/StaticSingleton.java @@ -0,0 +1,20 @@ +package cn.byhieg.designpatterntutorial.singleton; + +/** + * Created by shiqifeng on 2017/3/14. + * Mail byhieg@gmail.com + */ +public class StaticSingleton { + + private StaticSingleton(){ + } + + + public static final StaticSingleton getInstance(){ + return Holder.singleton; + } + + private static class Holder{ + private static final StaticSingleton singleton = new StaticSingleton(); + } +} From d907e7aef91e45688e7c5872e4f8ad88e98a9861 Mon Sep 17 00:00:00 2001 From: byhieg Date: Fri, 17 Mar 2017 11:10:03 +0800 Subject: [PATCH 088/118] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../maptutorial/TreeMapExample.java | 1 - .../proxy/staticproxy/Client.java | 13 +++++++++++++ .../proxy/staticproxy/ProxySubject.java | 19 +++++++++++++++++++ .../proxy/staticproxy/RealSubject.java | 14 ++++++++++++++ .../proxy/staticproxy/Subject.java | 10 ++++++++++ 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/Client.java create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/ProxySubject.java create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/RealSubject.java create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/Subject.java diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java index b791cbc..136999d 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/TreeMapExample.java @@ -1,6 +1,5 @@ package cn.byhieg.collectiontutorial.maptutorial; -import apple.laf.JRSUIUtils; import java.util.Iterator; import java.util.Map; diff --git a/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/Client.java b/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/Client.java new file mode 100644 index 0000000..7e38f06 --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/Client.java @@ -0,0 +1,13 @@ +package cn.byhieg.designpatterntutorial.proxy.staticproxy; + +/** + * Created by shiqifeng on 2017/3/17. + * Mail byhieg@gmail.com + */ +public class Client { + + public static void main(String[] args) { + ProxySubject subject = new ProxySubject(new RealSubject()); + subject.visit(); + } +} diff --git a/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/ProxySubject.java b/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/ProxySubject.java new file mode 100644 index 0000000..9a6ed10 --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/ProxySubject.java @@ -0,0 +1,19 @@ +package cn.byhieg.designpatterntutorial.proxy.staticproxy; + +/** + * Created by shiqifeng on 2017/3/17. + * Mail byhieg@gmail.com + */ +public class ProxySubject implements Subject{ + + private Subject subject; + + public ProxySubject(Subject subject) { + this.subject = subject; + } + + @Override + public void visit() { + subject.visit(); + } +} diff --git a/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/RealSubject.java b/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/RealSubject.java new file mode 100644 index 0000000..9669e0b --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/RealSubject.java @@ -0,0 +1,14 @@ +package cn.byhieg.designpatterntutorial.proxy.staticproxy; + +/** + * Created by shiqifeng on 2017/3/17. + * Mail byhieg@gmail.com + */ +public class RealSubject implements Subject { + + private String name = "byhieg"; + @Override + public void visit() { + System.out.println(name); + } +} diff --git a/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/Subject.java b/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/Subject.java new file mode 100644 index 0000000..1e93880 --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/proxy/staticproxy/Subject.java @@ -0,0 +1,10 @@ +package cn.byhieg.designpatterntutorial.proxy.staticproxy; + +/** + * Created by shiqifeng on 2017/3/17. + * Mail byhieg@gmail.com + */ +public interface Subject { + + void visit(); +} From a34b33c46eb2e08316109fbeb9c0660d11959b04 Mon Sep 17 00:00:00 2001 From: byhieg Date: Fri, 17 Mar 2017 11:33:19 +0800 Subject: [PATCH 089/118] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../proxy/dynamicproxy/DynamicProxy.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/DynamicProxy.java diff --git a/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/DynamicProxy.java b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/DynamicProxy.java new file mode 100644 index 0000000..abe4fe1 --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/DynamicProxy.java @@ -0,0 +1,18 @@ +package cn.byhieg.designpatterntutorial.proxy.dynamicproxy; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; + +/** + * Created by shiqifeng on 2017/3/17. + * Mail byhieg@gmail.com + */ +public class DynamicProxy implements InvocationHandler { + private Object object; + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + Object result = method.invoke(object, args); + return result; + } +} From 5af7b236085deaab8316e8f6f802109e0a05377a Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 28 Mar 2017 16:21:36 +0800 Subject: [PATCH 090/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E7=AE=97=E6=B3=95=EF=BC=8C=E9=80=89=E6=8B=A9=EF=BC=8C=E6=8F=92?= =?UTF-8?q?=E5=85=A5=EF=BC=8C=E5=86=92=E6=B3=A1=EF=BC=8C=E5=BF=AB=E6=8E=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/byhieg/algorithmtutorial/Sort.java | 176 ++++++++++++++++++ .../proxy/dynamicproxy/Client.java | 19 ++ .../proxy/dynamicproxy/DynamicProxy.java | 5 + .../proxy/dynamicproxy/RealSubject.java | 15 ++ .../proxy/dynamicproxy/Subject.java | 10 + .../algorithmtutorialtest/SortTest.java | 44 +++++ 6 files changed, 269 insertions(+) create mode 100644 src/main/java/cn/byhieg/algorithmtutorial/Sort.java create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/Client.java create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/RealSubject.java create mode 100644 src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/Subject.java create mode 100644 src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java diff --git a/src/main/java/cn/byhieg/algorithmtutorial/Sort.java b/src/main/java/cn/byhieg/algorithmtutorial/Sort.java new file mode 100644 index 0000000..57c8b5f --- /dev/null +++ b/src/main/java/cn/byhieg/algorithmtutorial/Sort.java @@ -0,0 +1,176 @@ +package cn.byhieg.algorithmtutorial; + +/** + * Created by shiqifeng on 2017/3/28. + * Mail byhieg@gmail.com + */ +public class Sort { + + /** + * 选择排序,每一轮排序,选择数组中数字最小的那一个放到指定的位置上。 + * 时间复杂度o(n^2),无论数组顺序如何都要选择一个最小的值,因为数组的是否有序,不影响时间复杂度 + * 空间复杂度o(1) + * @param nums + */ + public void chooseSort(int[] nums) { + int length = nums.length; + for (int i = 0; i < length; i++) { + int min = i;//申请额外的空间o(1) + for (int j = i + 1; j < length; j++) { + if (nums[min] > nums[j]) { + min = j; + } + } + //将最小的下标代表的数与i位置的进行交换 + int tmp = nums[i]; + nums[i] = nums[min]; + nums[min] = tmp; + } + } + + /** + * 直接插入排序,每一轮排序,都是在i坐标之前,包括i坐标的序列是有序的,但是并不是最终的排序位置。 + * 时间复杂度o(n^2),对于第二重循环,只会在非有序的环境下才会执行每个元素后移,因此针对有序的数组,时间复杂度最好的情况是o(N)。 + * 空间复杂度o(1) + * @param nums + */ + public void insertDirectlySort(int[] nums) { + int length = nums.length; + for (int i = 1; i < length; i++) { + for (int j = i ; j > 0; j --) { + if (nums[j] < nums[j - 1]) { + int tmp = nums[j - 1]; + nums[j - 1] = nums[j]; + nums[j] = tmp; + } + } + } + } + + /** + * 折半插入排序,针对直接排序而言,每一个要插入的元素都是插入在有序的数组中,因此,只需要查找到插入的位置即可,查找的方式利用二分查找 + * 时间复杂度和直接插入是一样的,只是快在了查找的过程中,还是o(N^2),最好的环境下是o(N) + * 空间复杂度还是o(1) + * @param nums + */ + public void insertBinarySort(int[] nums) { + int length = nums.length; + for (int i = 1; i < length;i++) { + int tmp = nums[i]; + int low = 0; + int high = i - 1; + while (low <= high) { + int mid = (low + high) / 2; + if (tmp < nums[mid]) { + high = mid - 1; + }else{ + low = mid + 1; + } + } + + for (int j = i; j >= low + 1;j--) { + nums[j] = nums[j - 1]; + } + nums[low] = tmp; + } + } + + /** + * 冒泡排序,每i轮排序,就是不断交换两个元素,直到将最大的元素放到n - i的位置上 + * 这种实现是按照算法定义的,但是效率是最低的 + * 时间复杂度o(n^2) + * 空间复杂度o(1) + * @param nums + */ + public void bubbleSort1(int[] nums) { + int length = nums.length; + for (int i = 1 ; i < length;i++) { + for (int j = 0 ; j < length - i;j++) { + if (nums[j] > nums[j + 1]) { + int tmp = nums[j]; + nums[j] = nums[j + 1]; + nums[j+1] = tmp; + } + } + } + } + + /** + * 冒泡排序,高效率实现,因为只需要用一个flag变量来记录本次的排序,是否修改 + * 如果没有修改,说明已经有序 + * @param nums + */ + public void bubbleSort2(int[] nums) { + int length = nums.length; + boolean flag = true; + while (flag) { + flag = false; + for (int j = 0 ; j < length - 1;j++) { + if (nums[j] > nums[j + 1]) { + int tmp = nums[j]; + nums[j] = nums[j + 1]; + nums[j + 1] = tmp; + flag = true; + } + } + length -- ; + } + } + + /** + * 快速排序,选定一个切分元素,每一轮排序后,都保证切分元素之前的元素都小于切分元素,切分元素之后的元素都大于切分元素 + * + * @param nums + */ + public void quickSort(int[] nums) { + int low = 0; + int high = nums.length - 1; + sort(nums, low, high); + } + + /** + * 快速排序的递归实现 + * @param nums + * @param low + * @param high + */ + public void sort(int[] nums, int low, int high) { + if (low >= high) return; + int j = partition(nums, low, high); + sort(nums, low, j - 1); + sort(nums, j + 1, high); + } + + /** + * 快速排序的辅助方法,来对排序的数组,进行切分, + * @param nums + * @param low + * @param high + * @return + */ + public int partition(int[] nums, int low, int high) { + int i = low; + int j = high; + int x = nums[i]; + while (i < j) { + //从右向左找到nums[j]小于x的元素 + while (i < j && nums[j] > x) j-- ; + if (i < j) { + nums[i] = nums[j]; + i++; + } + + //从左向右找到nums[i]大于x的元素 + while (i < j && nums[i] < x) i++; + if (i < j) { + nums[j] = nums[i]; + j--; + } + } + nums[i] = x; + return i; + } + + + +} diff --git a/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/Client.java b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/Client.java new file mode 100644 index 0000000..6d6a78d --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/Client.java @@ -0,0 +1,19 @@ +package cn.byhieg.designpatterntutorial.proxy.dynamicproxy; + + +import java.lang.reflect.Proxy; + +/** + * Created by shiqifeng on 2017/3/17. + * Mail byhieg@gmail.com + */ +public class Client { + + public static void main(String[] args) { + Subject realSubject = new RealSubject(); + DynamicProxy proxy = new DynamicProxy(realSubject); + ClassLoader classLoader = realSubject.getClass().getClassLoader(); + Subject subject = (Subject) Proxy.newProxyInstance(classLoader, new Class[]{Subject.class}, proxy); + subject.visit(); + } +} diff --git a/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/DynamicProxy.java b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/DynamicProxy.java index abe4fe1..5589d9c 100644 --- a/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/DynamicProxy.java +++ b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/DynamicProxy.java @@ -10,6 +10,11 @@ public class DynamicProxy implements InvocationHandler { private Object object; + + public DynamicProxy(Object object) { + this.object = object; + } + @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = method.invoke(object, args); diff --git a/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/RealSubject.java b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/RealSubject.java new file mode 100644 index 0000000..ab391f7 --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/RealSubject.java @@ -0,0 +1,15 @@ +package cn.byhieg.designpatterntutorial.proxy.dynamicproxy; + + +/** + * Created by shiqifeng on 2017/3/17. + * Mail byhieg@gmail.com + */ +public class RealSubject implements Subject { + + private String name = "byhieg"; + @Override + public void visit() { + System.out.println(name); + } +} diff --git a/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/Subject.java b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/Subject.java new file mode 100644 index 0000000..f662e32 --- /dev/null +++ b/src/main/java/cn/byhieg/designpatterntutorial/proxy/dynamicproxy/Subject.java @@ -0,0 +1,10 @@ +package cn.byhieg.designpatterntutorial.proxy.dynamicproxy; + +/** + * Created by shiqifeng on 2017/3/17. + * Mail byhieg@gmail.com + */ +public interface Subject { + + void visit(); +} diff --git a/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java b/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java new file mode 100644 index 0000000..6bf1bc1 --- /dev/null +++ b/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java @@ -0,0 +1,44 @@ +package cn.byhieg.algorithmtutorialtest; + +import cn.byhieg.algorithmtutorial.Sort; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/3/28. + * Mail byhieg@gmail.com + */ +public class SortTest extends TestCase { + int [] nums; + public void setUp() throws Exception { + super.setUp(); + nums = new int[]{10, 20, 2, 3, 1, 100, 45, 22, 51, 21}; + } + + public void tearDown() throws Exception { + for (int i = 0 ; i < nums.length;i++){ + System.out.print(nums[i] + " "); + } + } + +// public void testChooseSort() throws Exception { +// new Sort().chooseSort(nums); +// } + + +// public void testInsertDirectlySort() throws Exception { +// new Sort().insertDirectlySort(nums); +// } + +// public void testInsertBinarySort() throws Exception { +// new Sort().insertBinarySort(nums); +// } + +// public void testBubbleSort() throws Exception { +// new Sort().bubbleSort2(nums); +// } + + public void testQuickSort() throws Exception { + new Sort().quickSort(nums); + } + +} \ No newline at end of file From 7bc7130804ce5617e215274ad5fe846afa6dbd54 Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 28 Mar 2017 20:00:01 +0800 Subject: [PATCH 091/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A0=86=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/byhieg/algorithmtutorial/Sort.java | 112 +++++++++++++++--- .../algorithmtutorialtest/SortTest.java | 28 +++-- 2 files changed, 111 insertions(+), 29 deletions(-) diff --git a/src/main/java/cn/byhieg/algorithmtutorial/Sort.java b/src/main/java/cn/byhieg/algorithmtutorial/Sort.java index 57c8b5f..d4427a9 100644 --- a/src/main/java/cn/byhieg/algorithmtutorial/Sort.java +++ b/src/main/java/cn/byhieg/algorithmtutorial/Sort.java @@ -10,6 +10,7 @@ public class Sort { * 选择排序,每一轮排序,选择数组中数字最小的那一个放到指定的位置上。 * 时间复杂度o(n^2),无论数组顺序如何都要选择一个最小的值,因为数组的是否有序,不影响时间复杂度 * 空间复杂度o(1) + * * @param nums */ public void chooseSort(int[] nums) { @@ -32,18 +33,19 @@ public void chooseSort(int[] nums) { * 直接插入排序,每一轮排序,都是在i坐标之前,包括i坐标的序列是有序的,但是并不是最终的排序位置。 * 时间复杂度o(n^2),对于第二重循环,只会在非有序的环境下才会执行每个元素后移,因此针对有序的数组,时间复杂度最好的情况是o(N)。 * 空间复杂度o(1) + * * @param nums */ public void insertDirectlySort(int[] nums) { int length = nums.length; for (int i = 1; i < length; i++) { - for (int j = i ; j > 0; j --) { - if (nums[j] < nums[j - 1]) { - int tmp = nums[j - 1]; - nums[j - 1] = nums[j]; - nums[j] = tmp; - } - } + for (int j = i; j > 0; j--) { + if (nums[j] < nums[j - 1]) { + int tmp = nums[j - 1]; + nums[j - 1] = nums[j]; + nums[j] = tmp; + } + } } } @@ -51,11 +53,12 @@ public void insertDirectlySort(int[] nums) { * 折半插入排序,针对直接排序而言,每一个要插入的元素都是插入在有序的数组中,因此,只需要查找到插入的位置即可,查找的方式利用二分查找 * 时间复杂度和直接插入是一样的,只是快在了查找的过程中,还是o(N^2),最好的环境下是o(N) * 空间复杂度还是o(1) + * * @param nums */ public void insertBinarySort(int[] nums) { int length = nums.length; - for (int i = 1; i < length;i++) { + for (int i = 1; i < length; i++) { int tmp = nums[i]; int low = 0; int high = i - 1; @@ -63,12 +66,12 @@ public void insertBinarySort(int[] nums) { int mid = (low + high) / 2; if (tmp < nums[mid]) { high = mid - 1; - }else{ + } else { low = mid + 1; } } - for (int j = i; j >= low + 1;j--) { + for (int j = i; j >= low + 1; j--) { nums[j] = nums[j - 1]; } nums[low] = tmp; @@ -80,16 +83,17 @@ public void insertBinarySort(int[] nums) { * 这种实现是按照算法定义的,但是效率是最低的 * 时间复杂度o(n^2) * 空间复杂度o(1) + * * @param nums */ public void bubbleSort1(int[] nums) { int length = nums.length; - for (int i = 1 ; i < length;i++) { - for (int j = 0 ; j < length - i;j++) { + for (int i = 1; i < length; i++) { + for (int j = 0; j < length - i; j++) { if (nums[j] > nums[j + 1]) { int tmp = nums[j]; nums[j] = nums[j + 1]; - nums[j+1] = tmp; + nums[j + 1] = tmp; } } } @@ -98,6 +102,7 @@ public void bubbleSort1(int[] nums) { /** * 冒泡排序,高效率实现,因为只需要用一个flag变量来记录本次的排序,是否修改 * 如果没有修改,说明已经有序 + * * @param nums */ public void bubbleSort2(int[] nums) { @@ -105,7 +110,7 @@ public void bubbleSort2(int[] nums) { boolean flag = true; while (flag) { flag = false; - for (int j = 0 ; j < length - 1;j++) { + for (int j = 0; j < length - 1; j++) { if (nums[j] > nums[j + 1]) { int tmp = nums[j]; nums[j] = nums[j + 1]; @@ -113,12 +118,14 @@ public void bubbleSort2(int[] nums) { flag = true; } } - length -- ; + length--; } } /** * 快速排序,选定一个切分元素,每一轮排序后,都保证切分元素之前的元素都小于切分元素,切分元素之后的元素都大于切分元素 + * 时间复杂度o(NlgN) + * 空间复杂度o(lgN) * * @param nums */ @@ -130,6 +137,7 @@ public void quickSort(int[] nums) { /** * 快速排序的递归实现 + * * @param nums * @param low * @param high @@ -143,6 +151,7 @@ public void sort(int[] nums, int low, int high) { /** * 快速排序的辅助方法,来对排序的数组,进行切分, + * * @param nums * @param low * @param high @@ -154,7 +163,7 @@ public int partition(int[] nums, int low, int high) { int x = nums[i]; while (i < j) { //从右向左找到nums[j]小于x的元素 - while (i < j && nums[j] > x) j-- ; + while (i < j && nums[j] > x) j--; if (i < j) { nums[i] = nums[j]; i++; @@ -171,6 +180,75 @@ public int partition(int[] nums, int low, int high) { return i; } - + + /** + * 堆排序,建立一个小顶堆,小顶堆满足父节点比两个子节点的值要小 + * 堆的性质满足:1. 只能在堆顶删除元素 + * 2. 只能在堆的最后一位存元素。 + * 3. 堆的存储利用数组,满足i节点是父节点,则子节点是2 * i+ 1,2 * i + 2 + * 4. 堆的两种建方法,第一种是从上到下,@see sink(),第二种是从下到上 @see swim + * 5. 堆排序是指在弄好的堆中,输出第一个元素,然后将最后一个元素与第一个元素互换,换后调用sink,找到自己的位置后,在重复这个步骤,就输出一个有序的堆 + * 6. 如果要生序就需要大顶堆,要降序就需要小顶堆。 + * 时间复杂度:o(NlgN) + * 空间复杂度: o(1) + * 这是小顶堆的排序,所以nums数组最后是降序的 + * @param nums + */ + public void heapSort(int[] nums) { + int length = nums.length; + for (int i = 0; i < length; i++) { + swim(nums, i); + } + while (length > 0) { + int temp = nums[0]; + nums[0] = nums[length - 1]; + nums[length - 1] = temp; + length--; + sink(nums, 0, length); + } + } + + /** + * 将i放入对堆中,i的父节点是(i - 1)/ 2,父节点的值是小于他的两个子节点的 + * i节点放入后,要向上移动,如果父节点比i节点的值大,则i节点要继续上移。 + * + * @param nums + * @param i + */ + private void swim(int nums[], int i) { + while (i > 0) { + int father = (i - 1) / 2; + if (nums[father] > nums[i]) { + int temp = nums[father]; + nums[father] = nums[i]; + nums[i] = temp; + } + i = father; + } + } + + + /** + * 从i节点由上到下开始调整,i节点的子节点为2*i + 1, 2 * i + 2 + * i节点要向下移动,直到满足i节点小于两个子节点 + * + * @param nums nums[] 数组 + * @param i i节点 + */ + public void sink(int nums[], int i,int n) { + int son = 2 * i + 1; + while (son <= n - 1) { + if (son < n - 1 && nums[son] > nums[son + 1]) son++; + if (nums[i] > nums[son]) { + int temp = nums[i]; + nums[i] = nums[son]; + nums[son] = temp; + i = son; + } else { + break; + } + } + } + } diff --git a/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java b/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java index 6bf1bc1..65b128e 100644 --- a/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java +++ b/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java @@ -20,25 +20,29 @@ public void tearDown() throws Exception { } } -// public void testChooseSort() throws Exception { -// new Sort().chooseSort(nums); -// } + public void testChooseSort() throws Exception { + new Sort().chooseSort(nums); + } -// public void testInsertDirectlySort() throws Exception { -// new Sort().insertDirectlySort(nums); -// } + public void testInsertDirectlySort() throws Exception { + new Sort().insertDirectlySort(nums); + } -// public void testInsertBinarySort() throws Exception { -// new Sort().insertBinarySort(nums); -// } + public void testInsertBinarySort() throws Exception { + new Sort().insertBinarySort(nums); + } -// public void testBubbleSort() throws Exception { -// new Sort().bubbleSort2(nums); -// } + public void testBubbleSort() throws Exception { + new Sort().bubbleSort2(nums); + } public void testQuickSort() throws Exception { new Sort().quickSort(nums); } + public void testHeapSort() throws Exception { + new Sort().heapSort(nums); + } + } \ No newline at end of file From 36aea2e2d8e4bd0cd2a97e1b27ea65f13b1b6ac0 Mon Sep 17 00:00:00 2001 From: byhieg Date: Tue, 28 Mar 2017 21:02:40 +0800 Subject: [PATCH 092/118] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=AF=B9?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E7=AE=97=E6=B3=95=E7=A8=B3=E5=AE=9A=E6=80=A7?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/byhieg/algorithmtutorial/Sort.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/cn/byhieg/algorithmtutorial/Sort.java b/src/main/java/cn/byhieg/algorithmtutorial/Sort.java index d4427a9..74cc832 100644 --- a/src/main/java/cn/byhieg/algorithmtutorial/Sort.java +++ b/src/main/java/cn/byhieg/algorithmtutorial/Sort.java @@ -10,7 +10,7 @@ public class Sort { * 选择排序,每一轮排序,选择数组中数字最小的那一个放到指定的位置上。 * 时间复杂度o(n^2),无论数组顺序如何都要选择一个最小的值,因为数组的是否有序,不影响时间复杂度 * 空间复杂度o(1) - * + * 不稳定排序 * @param nums */ public void chooseSort(int[] nums) { @@ -33,13 +33,14 @@ public void chooseSort(int[] nums) { * 直接插入排序,每一轮排序,都是在i坐标之前,包括i坐标的序列是有序的,但是并不是最终的排序位置。 * 时间复杂度o(n^2),对于第二重循环,只会在非有序的环境下才会执行每个元素后移,因此针对有序的数组,时间复杂度最好的情况是o(N)。 * 空间复杂度o(1) - * + * 稳定排序 * @param nums */ public void insertDirectlySort(int[] nums) { int length = nums.length; for (int i = 1; i < length; i++) { for (int j = i; j > 0; j--) { + //这一步导致该算法是稳定排序 if (nums[j] < nums[j - 1]) { int tmp = nums[j - 1]; nums[j - 1] = nums[j]; @@ -83,13 +84,14 @@ public void insertBinarySort(int[] nums) { * 这种实现是按照算法定义的,但是效率是最低的 * 时间复杂度o(n^2) * 空间复杂度o(1) - * + * 稳定排序 * @param nums */ public void bubbleSort1(int[] nums) { int length = nums.length; for (int i = 1; i < length; i++) { for (int j = 0; j < length - i; j++) { + //这一步导致该算法是稳定排序 if (nums[j] > nums[j + 1]) { int tmp = nums[j]; nums[j] = nums[j + 1]; @@ -126,7 +128,7 @@ public void bubbleSort2(int[] nums) { * 快速排序,选定一个切分元素,每一轮排序后,都保证切分元素之前的元素都小于切分元素,切分元素之后的元素都大于切分元素 * 时间复杂度o(NlgN) * 空间复杂度o(lgN) - * + * 不稳定排序 * @param nums */ public void quickSort(int[] nums) { @@ -192,12 +194,16 @@ public int partition(int[] nums, int low, int high) { * 时间复杂度:o(NlgN) * 空间复杂度: o(1) * 这是小顶堆的排序,所以nums数组最后是降序的 + * 不稳定,不稳定的原因在建堆的时候,就可能把相同元素的位置换了,比如两个相同元素在不同的子树上 * @param nums */ public void heapSort(int[] nums) { int length = nums.length; - for (int i = 0; i < length; i++) { - swim(nums, i); +// for (int i = 0; i < length; i++) { +// swim(nums, i); +// } + for (int i = length / 2 ; i >= 0;i--) { + sink(nums,i,length); } while (length > 0) { int temp = nums[0]; From b26e8b4d338bdfcdf9c39ee1f10d761bea9b2053 Mon Sep 17 00:00:00 2001 From: byhieg Date: Wed, 29 Mar 2017 23:15:10 +0800 Subject: [PATCH 093/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=8C=E6=9F=A5?= =?UTF-8?q?=E6=9F=A5=E6=89=BE=E7=9A=84=E4=B8=89=E7=A7=8D=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/byhieg/algorithmtutorial/Find.java | 83 +++++++++++++++++++ .../maptutorial/HashMapExample.java | 4 +- .../algorithmtutorialtest/FindTest.java | 34 ++++++++ 3 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 src/main/java/cn/byhieg/algorithmtutorial/Find.java create mode 100644 src/test/java/cn/byhieg/algorithmtutorialtest/FindTest.java diff --git a/src/main/java/cn/byhieg/algorithmtutorial/Find.java b/src/main/java/cn/byhieg/algorithmtutorial/Find.java new file mode 100644 index 0000000..ff548c6 --- /dev/null +++ b/src/main/java/cn/byhieg/algorithmtutorial/Find.java @@ -0,0 +1,83 @@ +package cn.byhieg.algorithmtutorial; + +/** + * Created by shiqifeng on 2017/3/29. + * Mail byhieg@gmail.com + */ +public class Find { + + + /** + * 二查查找算法,要求准确找到目标值,没有找到则是-1. + * 此方法保证在相同元素都满足条件时,取到的是最大的下标 + * 时间复杂度 o(lgN) + * @param nums int型数组,要求有序 + * @return 找到,返回下标,没找到,返回-1 + */ + public int binarySerachFind(int[] nums,int des) { + int length = nums.length; + int low = 0; + int high = length - 1; + while (low < high) { + int mid = low + (high - low) / 2; + if (nums[mid] == des) { + return mid; + } else if (nums[mid] < des) { + low = mid + 1; + } else{ + high = mid - 1; + } + } + return -1; + } + + /** + * 给定一个单调不降的数组,查找大于des条件的最小的数 + * @param nums + * @param des + * @return + */ + public int binarySearchMinFind(int[] nums, int des) { + int length = nums.length; + int low = 0; + int high = length - 1; + int mid ; + while (low < high) { + mid = (low + high) / 2; + if (nums[mid] <= des){ + low = mid + 1; + }else{ + high = mid; + } + } + if (nums[high] > des) return high; + return -1; + } + + /** + * 给定一个单调不降的数组,查找小于des条件的最大的数 + * @param nums + * @param des + * @return + */ + public int binarySearchMaxFind(int[] nums, int des) { + int length = nums.length; + int low = 0; + int high = length - 1; + int mid; + int result = -1; + while (low < high) { + mid = low + (high - low + 1) / 2; + if (nums[mid] < des){ + low = mid; + }else{ + high = mid - 1; + } + } + if (nums[low] < des) return low; + return -1; + } + + + +} diff --git a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java index e3a51ac..9e55ef1 100644 --- a/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java +++ b/src/main/java/cn/byhieg/collectiontutorial/maptutorial/HashMapExample.java @@ -1,8 +1,6 @@ package cn.byhieg.collectiontutorial.maptutorial; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +import java.util.*; /** * Created by shiqifeng on 2017/2/24. diff --git a/src/test/java/cn/byhieg/algorithmtutorialtest/FindTest.java b/src/test/java/cn/byhieg/algorithmtutorialtest/FindTest.java new file mode 100644 index 0000000..beef69c --- /dev/null +++ b/src/test/java/cn/byhieg/algorithmtutorialtest/FindTest.java @@ -0,0 +1,34 @@ +package cn.byhieg.algorithmtutorialtest; + +import cn.byhieg.algorithmtutorial.Find; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/3/29. + * Mail byhieg@gmail.com + */ +public class FindTest extends TestCase { + int[] nums; + int result; + public void setUp() throws Exception { + super.setUp(); + nums = new int[]{1}; + } + + public void tearDown() throws Exception { + System.out.println(result); + } + +// public void testBinarySerachFind() throws Exception { +// result = new Find().binarySerachFind(nums,6); +// } +//// +// public void testBinarySearchMinFind() throws Exception { +// result = new Find().binarySearchMinFind(nums,1); +// } + + public void testBinarySearchMaxFind() throws Exception { + result = new Find().binarySearchMaxFind(nums, 2); + } + +} \ No newline at end of file From 769ffdd6c855975b01568054fdf7aa6d12d192c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Thu, 30 Mar 2017 21:34:16 +0800 Subject: [PATCH 094/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=8C=E5=8F=89?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=A0=91=EF=BC=8C=E4=BB=A5=E5=8F=8A=E6=A0=91?= =?UTF-8?q?=E7=9A=84=E5=85=88=E5=BA=8F=EF=BC=8C=E4=B8=AD=E5=BA=8F=EF=BC=8C?= =?UTF-8?q?=E5=90=8E=E5=BA=8F=E9=80=92=E5=BD=92=E5=92=8C=E9=9D=9E=E9=80=92?= =?UTF-8?q?=E5=BD=92=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../algorithmtutorial/BinarySearchTree.java | 258 ++++++++++++++++++ .../BinarySearchTreeTest.java | 53 ++++ 2 files changed, 311 insertions(+) create mode 100644 src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java create mode 100644 src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java diff --git a/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java b/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java new file mode 100644 index 0000000..ccb787d --- /dev/null +++ b/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java @@ -0,0 +1,258 @@ +package cn.byhieg.algorithmtutorial; + +/** + * Created by byhieg on 17/3/30. + * Mail to byhieg@gmail.com + */ + +import java.util.Stack; + +/** + * 该类是二叉搜索树 + * 该树在实现的时候,不考虑数组中有重复的数字。 + * 节点的左子节点的值都小于这个节点的值,节点的右子节点的值都大于等于这个节点的值 + */ +public class BinarySearchTree { + + private Node root; + + + public BinarySearchTree(){ + + } + + + public BinarySearchTree(int[] nums) { + Node[] nodes = new Node[nums.length]; + for (int i = 0 ; i < nums.length;i++) { + nodes[i] = new Node(nums[i]); + insert(nodes[i]); + } + } + + /** + * 查找指定的元素 + * @param des + * @return + */ + public Node find(int des){ + if (root == null) { + System.out.println("树是空的"); + throw new RuntimeException(); + } + Node current = root; + while (current.data != des) { + if (current.data < des) { + current = current.right; + }else{ + current = current.left; + } + if (current == null) return null; + } + return current; + } + + /** + * 对BST执行插入操作,采用非递归的形式 + * 保证插入后,左节点的值小于根节点的值,根节点的值小于右节点的值 + * @param node + * @return + */ + public boolean insert(Node node){ + if (root == null) { + root = node; + return true; + } + + if (find(node.data) != null) { + System.out.println("不允许插入相同data的数"); + throw new RuntimeException(); + } + + Node current = root; + while (current != null) { + if (current.data < node.data) { + if (current.right == null) { + current.right = node; + return true; + } + current = current.right; + }else{ + if (current.left == null) { + current.left = node; + return true; + } + current = current.left; + } + } + return false; + + } + + /** + * 树的前序遍历,递归实现 + */ + public void preOrder(Node node) { + System.out.print(node.data + "-->"); + if (node.left != null) { + preOrder(node.left); + } + if (node.right != null) { + preOrder(node.right); + } + } + + /** + * 树的中序遍历,递归实现 + * 针对BST,该结果会从小到大输出树 + * @param node + */ + public void inOrder(Node node){ + if (node.left != null) { + inOrder(node.left); + } + System.out.print(node.data + "-->"); + if (node.right != null) { + inOrder(node.right); + } + } + + /** + * 树的后续遍历,递归实现 + */ + public void postOrder(Node node){ + if (node.left != null) { + postOrder(node.left); + } + if (node.right != null) { + postOrder(node.right); + } + System.out.print(node.data + "-->"); + } + + + /** + * 树的先续遍历,非递归实现 + * 1. 建立一个栈,现将头结点压入栈中。 + * 2. 现将每出栈一个节点,打印他的值,然后都要先加入他的右节点,在加入他的左节点。因为栈的后进先出的特性,才能让左边先出。 + * 3. 不断重复2,直到栈空 + * + */ + public void preOrder2(Node node) { + if (node != null) { + Stack stack = new Stack<>(); + stack.push(node); + while (!stack.isEmpty()) { + Node tmp = stack.pop(); + System.out.print(tmp.data + "-->"); + if (tmp.right != null) { + stack.push(tmp.right); + } + if (tmp.left != null) { + stack.push(tmp.left); + } + } + } + } + + /** + * 树的中序遍历,非递归实现 + * 1. 设定cur,初始化cur = root节点,不断遍历里cur.left,并将其压入栈中,直到null。 + * 2. 出栈一个节点,打印他的值,然后cur = node.right,并不断重复第二步 + * 3. 当栈为空,并且cur为空时,停止 + */ + public void inorder2(Node node){ + if (node != null) { + Stack stack = new Stack<>(); + Node cur = node; + while (!stack.isEmpty() || cur != null) { + if (cur == null) { + cur = stack.pop(); + System.out.print(cur.data + "-->"); + cur = cur.right; + }else{ + stack.push(cur); + cur = cur.left; + } + } + } + } + + /** + * 树的后续遍历,非递归实现 + * 1. 树的先续遍历中,是栈存放顺序是根,右节点,左节点。 + * 2. 我们可以将其反过来,用栈存放是根,左节点,右节点。然后出栈的时候,将出栈的结果存放到另一个栈里。 + * 3. 第二栈里的顺序从上到下就是左节点,右节点,根的顺序。 + * @param node + */ + + public void postOrder2(Node node) { + if (node != null) { + Stack stack = new Stack<>(); + Stack result = new Stack<>(); + Node cur = node; + stack.push(cur); + while (!stack.isEmpty()){ + Node tmp = stack.pop(); + result.push(tmp); + if (tmp.left != null) { + stack.push(tmp.left); + } + if (tmp.right != null) { + stack.push(tmp.right); + } + } + + while (!result.isEmpty()) { + System.out.print(result.pop().data + "-->"); + } + } + } + + + /** + * 得到树中最小的节点 + * @return + */ + public Node getMinNode(){ + if (root == null) { + throw new RuntimeException("树为空"); + } + Node current = root; + while (current.left != null) { + current = current.left; + } + return current; + + } + + /** + * 得到树中最大的节点 + * @return + */ + public Node getMaxNode(){ + if (root == null) { + throw new RuntimeException("树为空"); + } + Node current = root; + while (current.right != null) { + current = current.right; + } + + return current; + } + + public static class Node{ + public int data; + public Node left; + public Node right; + + public Node(int data){ + this.data = data; + } + } + + public Node getRoot() { + return root; + } +} diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java new file mode 100644 index 0000000..775d0cf --- /dev/null +++ b/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java @@ -0,0 +1,53 @@ +package cn.byhieg.collectiontutorialtest; + +import cn.byhieg.algorithmtutorial.BinarySearchTree; +import com.sun.tools.internal.ws.wsdl.document.soap.SOAPUse; +import junit.framework.TestCase; +import org.junit.Assert; + +/** + * Created by byhieg on 17/3/30. + * Mail to byhieg@gmail.com + */ +public class BinarySearchTreeTest extends TestCase { + int [] nums; + BinarySearchTree tree; + public void setUp() throws Exception { + super.setUp(); + nums = new int[]{10,6,2,8,7,3,4,1}; + tree = new BinarySearchTree(nums); + } + + public void tearDown() throws Exception { + } + + + public void testInsert() throws Exception { + } + + public void testInOrder() throws Exception { + System.out.println("中序遍历"); + tree.inorder2(tree.getRoot()); + System.out.println(); + } + + public void testPreOrder() throws Exception { + System.out.println("先续遍历"); + tree.preOrder2(tree.getRoot()); + System.out.println(); + } + + public void testPostOrder() throws Exception { + System.out.println("后续遍历"); + tree.postOrder2(tree.getRoot()); + System.out.println(); + } + + public void testGetMaxData() throws Exception { +// Assert.assertEquals(12,tree.getMaxNode().data); + } + + public void testGetMinData() throws Exception { +// Assert.assertEquals(1,tree.getMinNode().data); + } +} \ No newline at end of file From 2f4dc6ba888c39e270716c12da454dab62a7ec73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Thu, 30 Mar 2017 22:37:54 +0800 Subject: [PATCH 095/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=89=8D=E5=BA=8F=E9=81=8D=E5=8E=86=E5=92=8C=E4=B8=AD=E5=BA=8F?= =?UTF-8?q?=E9=81=8D=E5=8E=86=E7=9A=84=E6=83=85=E5=86=B5=EF=BC=8C=E8=BF=98?= =?UTF-8?q?=E5=8E=9F=E4=BA=8C=E5=8F=89=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../algorithmtutorial/BinarySearchTree.java | 76 +++++++++++++++---- .../cn/byhieg/algorithmtutorial/Find.java | 6 +- .../BinarySearchTreeTest.java | 17 +++-- 3 files changed, 75 insertions(+), 24 deletions(-) diff --git a/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java b/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java index ccb787d..165d5d9 100644 --- a/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java +++ b/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java @@ -17,14 +17,14 @@ public class BinarySearchTree { private Node root; - public BinarySearchTree(){ + public BinarySearchTree() { } public BinarySearchTree(int[] nums) { Node[] nodes = new Node[nums.length]; - for (int i = 0 ; i < nums.length;i++) { + for (int i = 0; i < nums.length; i++) { nodes[i] = new Node(nums[i]); insert(nodes[i]); } @@ -32,10 +32,11 @@ public BinarySearchTree(int[] nums) { /** * 查找指定的元素 + * * @param des * @return */ - public Node find(int des){ + public Node find(int des) { if (root == null) { System.out.println("树是空的"); throw new RuntimeException(); @@ -44,7 +45,7 @@ public Node find(int des){ while (current.data != des) { if (current.data < des) { current = current.right; - }else{ + } else { current = current.left; } if (current == null) return null; @@ -55,10 +56,11 @@ public Node find(int des){ /** * 对BST执行插入操作,采用非递归的形式 * 保证插入后,左节点的值小于根节点的值,根节点的值小于右节点的值 + * * @param node * @return */ - public boolean insert(Node node){ + public boolean insert(Node node) { if (root == null) { root = node; return true; @@ -77,7 +79,7 @@ public boolean insert(Node node){ return true; } current = current.right; - }else{ + } else { if (current.left == null) { current.left = node; return true; @@ -105,9 +107,10 @@ public void preOrder(Node node) { /** * 树的中序遍历,递归实现 * 针对BST,该结果会从小到大输出树 + * * @param node */ - public void inOrder(Node node){ + public void inOrder(Node node) { if (node.left != null) { inOrder(node.left); } @@ -120,7 +123,7 @@ public void inOrder(Node node){ /** * 树的后续遍历,递归实现 */ - public void postOrder(Node node){ + public void postOrder(Node node) { if (node.left != null) { postOrder(node.left); } @@ -136,7 +139,6 @@ public void postOrder(Node node){ * 1. 建立一个栈,现将头结点压入栈中。 * 2. 现将每出栈一个节点,打印他的值,然后都要先加入他的右节点,在加入他的左节点。因为栈的后进先出的特性,才能让左边先出。 * 3. 不断重复2,直到栈空 - * */ public void preOrder2(Node node) { if (node != null) { @@ -161,7 +163,7 @@ public void preOrder2(Node node) { * 2. 出栈一个节点,打印他的值,然后cur = node.right,并不断重复第二步 * 3. 当栈为空,并且cur为空时,停止 */ - public void inorder2(Node node){ + public void inorder2(Node node) { if (node != null) { Stack stack = new Stack<>(); Node cur = node; @@ -170,7 +172,7 @@ public void inorder2(Node node){ cur = stack.pop(); System.out.print(cur.data + "-->"); cur = cur.right; - }else{ + } else { stack.push(cur); cur = cur.left; } @@ -183,6 +185,7 @@ public void inorder2(Node node){ * 1. 树的先续遍历中,是栈存放顺序是根,右节点,左节点。 * 2. 我们可以将其反过来,用栈存放是根,左节点,右节点。然后出栈的时候,将出栈的结果存放到另一个栈里。 * 3. 第二栈里的顺序从上到下就是左节点,右节点,根的顺序。 + * * @param node */ @@ -192,7 +195,7 @@ public void postOrder2(Node node) { Stack result = new Stack<>(); Node cur = node; stack.push(cur); - while (!stack.isEmpty()){ + while (!stack.isEmpty()) { Node tmp = stack.pop(); result.push(tmp); if (tmp.left != null) { @@ -212,9 +215,10 @@ public void postOrder2(Node node) { /** * 得到树中最小的节点 + * * @return */ - public Node getMinNode(){ + public Node getMinNode() { if (root == null) { throw new RuntimeException("树为空"); } @@ -228,9 +232,10 @@ public Node getMinNode(){ /** * 得到树中最大的节点 + * * @return */ - public Node getMaxNode(){ + public Node getMaxNode() { if (root == null) { throw new RuntimeException("树为空"); } @@ -242,12 +247,51 @@ public Node getMaxNode(){ return current; } - public static class Node{ + + public void getTree(int[] preOrders, int[] inOrders,boolean isLeft) { + int root = preOrders[0]; + if (isLeft) { + System.out.println("左" + root); + }else{ + System.out.println("右" + root); + } + + int index = new Find().binarySearchFind(inOrders, root); + int[] left = new int[index]; + int[] preLeft = new int[index]; + if (left.length != 0) { + for (int i = 0; i < index; i++) { + left[i] = inOrders[i]; + preLeft[i] = preOrders[i + 1]; + } + } + int size = inOrders.length - index - 1; + int[] right = new int[inOrders.length - index - 1]; + int[] preRight = new int[size]; + if (right.length != 0) { + for (int i = 0; i < size; i++) { + right[i] = inOrders[i + index + 1]; + preRight[i] = preOrders[preLeft.length + i + 1]; + } + } + + if (preLeft.length != 0) { + getTree(preLeft, left,true); + } + + if (preRight.length != 0) { + getTree(preRight, right,false); + } + System.out.println(); + + } + + public static class Node { public int data; public Node left; public Node right; - public Node(int data){ + public Node(int data) { this.data = data; } } diff --git a/src/main/java/cn/byhieg/algorithmtutorial/Find.java b/src/main/java/cn/byhieg/algorithmtutorial/Find.java index ff548c6..f476fb3 100644 --- a/src/main/java/cn/byhieg/algorithmtutorial/Find.java +++ b/src/main/java/cn/byhieg/algorithmtutorial/Find.java @@ -14,12 +14,12 @@ public class Find { * @param nums int型数组,要求有序 * @return 找到,返回下标,没找到,返回-1 */ - public int binarySerachFind(int[] nums,int des) { + public int binarySearchFind(int[] nums,int des) { int length = nums.length; int low = 0; int high = length - 1; - while (low < high) { - int mid = low + (high - low) / 2; + while (low <= high) { + int mid = (low + high) / 2; if (nums[mid] == des) { return mid; } else if (nums[mid] < des) { diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java index 775d0cf..85ce3e8 100644 --- a/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java +++ b/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java @@ -1,7 +1,6 @@ package cn.byhieg.collectiontutorialtest; import cn.byhieg.algorithmtutorial.BinarySearchTree; -import com.sun.tools.internal.ws.wsdl.document.soap.SOAPUse; import junit.framework.TestCase; import org.junit.Assert; @@ -10,11 +9,12 @@ * Mail to byhieg@gmail.com */ public class BinarySearchTreeTest extends TestCase { - int [] nums; + int[] nums; BinarySearchTree tree; + public void setUp() throws Exception { super.setUp(); - nums = new int[]{10,6,2,8,7,3,4,1}; + nums = new int[]{10, 6, 2, 8, 7, 3, 4, 1}; tree = new BinarySearchTree(nums); } @@ -43,11 +43,18 @@ public void testPostOrder() throws Exception { System.out.println(); } + public void testGetTree() throws Exception { + System.out.println("树"); + int[] pre = new int[]{10, 6, 2, 1, 3, 4, 8, 7}; + int[] in = new int[]{1, 2, 3, 4, 6, 7, 8, 10}; + tree.getTree(pre, in,true); + } + public void testGetMaxData() throws Exception { -// Assert.assertEquals(12,tree.getMaxNode().data); + Assert.assertEquals(10,tree.getMaxNode().data); } public void testGetMinData() throws Exception { -// Assert.assertEquals(1,tree.getMinNode().data); + Assert.assertEquals(1,tree.getMinNode().data); } } \ No newline at end of file From 2d5db31cfb3c9558fecb310271d3f35c235feabc Mon Sep 17 00:00:00 2001 From: byhieg Date: Wed, 5 Apr 2017 18:32:16 +0800 Subject: [PATCH 096/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=8E=E5=89=8D?= =?UTF-8?q?=E5=BA=8F=E9=81=8D=E5=8E=86=E5=92=8C=E4=B8=AD=E5=BA=8F=E9=81=8D?= =?UTF-8?q?=E5=8E=86=E5=BE=97=E5=88=B0=E6=A0=91=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../algorithmtutorial/BinarySearchTree.java | 59 +++++++++++++++---- .../cn/byhieg/algorithmtutorial/Sort.java | 3 +- .../algorithmtutorialtest/SortTest.java | 42 ++++++------- .../BinarySearchTreeTest.java | 26 ++++---- 4 files changed, 85 insertions(+), 45 deletions(-) diff --git a/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java b/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java index 165d5d9..f2fc3c1 100644 --- a/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java +++ b/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java @@ -5,6 +5,8 @@ * Mail to byhieg@gmail.com */ +import java.util.LinkedList; +import java.util.Queue; import java.util.Stack; /** @@ -212,6 +214,26 @@ public void postOrder2(Node node) { } } + /** + * 树的层次遍历,类似于图的BFS + * @param root + */ + public void levelRead(Node root) { + if (root == null) return; + Queue queue = new LinkedList<>(); + queue.offer(root); + while (!queue.isEmpty()) { + Node current = queue.poll(); + System.out.print(current.data + "-->"); + if (current.left != null) { + queue.offer(current.left); + } + if (current.right != null) { + queue.offer(current.right); + } + } + } + /** * 得到树中最小的节点 @@ -248,15 +270,15 @@ public Node getMaxNode() { } - public void getTree(int[] preOrders, int[] inOrders,boolean isLeft) { + public void getTree(int[] preOrders, int[] inOrders,Node r) { int root = preOrders[0]; - if (isLeft) { - System.out.println("左" + root); - }else{ - System.out.println("右" + root); - } - - int index = new Find().binarySearchFind(inOrders, root); +// if (isLeft) { +// System.out.println("左" + root); +// }else{ +// System.out.println("右" + root); +// } + r.data = root; + int index = findIndex(inOrders, root); int[] left = new int[index]; int[] preLeft = new int[index]; if (left.length != 0) { @@ -264,7 +286,11 @@ public void getTree(int[] preOrders, int[] inOrders,boolean isLeft) { left[i] = inOrders[i]; preLeft[i] = preOrders[i + 1]; } + Node node = new Node(preLeft[0]); + r.left = node; } + + int size = inOrders.length - index - 1; int[] right = new int[inOrders.length - index - 1]; int[] preRight = new int[size]; @@ -273,17 +299,17 @@ public void getTree(int[] preOrders, int[] inOrders,boolean isLeft) { right[i] = inOrders[i + index + 1]; preRight[i] = preOrders[preLeft.length + i + 1]; } + Node node = new Node(preRight[0]); + r.right = node; } if (preLeft.length != 0) { - getTree(preLeft, left,true); + getTree(preLeft, left,r.left); } if (preRight.length != 0) { - getTree(preRight, right,false); + getTree(preRight, right,r.right); } - System.out.println(); - } public static class Node { @@ -299,4 +325,13 @@ public Node(int data) { public Node getRoot() { return root; } + + private int findIndex(int[] nums, int target) { + for (int i = 0 ; i < nums.length;i++) { + if (nums[i] == target) { + return i; + } + } + return -1; + } } diff --git a/src/main/java/cn/byhieg/algorithmtutorial/Sort.java b/src/main/java/cn/byhieg/algorithmtutorial/Sort.java index 74cc832..4571f7a 100644 --- a/src/main/java/cn/byhieg/algorithmtutorial/Sort.java +++ b/src/main/java/cn/byhieg/algorithmtutorial/Sort.java @@ -250,7 +250,8 @@ public void sink(int nums[], int i,int n) { nums[i] = nums[son]; nums[son] = temp; i = son; - } else { + son = 2 * i + 1; + }else{ break; } } diff --git a/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java b/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java index 65b128e..08c1d90 100644 --- a/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java +++ b/src/test/java/cn/byhieg/algorithmtutorialtest/SortTest.java @@ -19,27 +19,27 @@ public void tearDown() throws Exception { System.out.print(nums[i] + " "); } } - - public void testChooseSort() throws Exception { - new Sort().chooseSort(nums); - } - - - public void testInsertDirectlySort() throws Exception { - new Sort().insertDirectlySort(nums); - } - - public void testInsertBinarySort() throws Exception { - new Sort().insertBinarySort(nums); - } - - public void testBubbleSort() throws Exception { - new Sort().bubbleSort2(nums); - } - - public void testQuickSort() throws Exception { - new Sort().quickSort(nums); - } +// +// public void testChooseSort() throws Exception { +// new Sort().chooseSort(nums); +// } +// +// +// public void testInsertDirectlySort() throws Exception { +// new Sort().insertDirectlySort(nums); +// } +// +// public void testInsertBinarySort() throws Exception { +// new Sort().insertBinarySort(nums); +// } +// +// public void testBubbleSort() throws Exception { +// new Sort().bubbleSort2(nums); +// } +// +// public void testQuickSort() throws Exception { +// new Sort().quickSort(nums); +// } public void testHeapSort() throws Exception { new Sort().heapSort(nums); diff --git a/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java b/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java index 85ce3e8..c56ce25 100644 --- a/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java +++ b/src/test/java/cn/byhieg/collectiontutorialtest/BinarySearchTreeTest.java @@ -14,11 +14,13 @@ public class BinarySearchTreeTest extends TestCase { public void setUp() throws Exception { super.setUp(); - nums = new int[]{10, 6, 2, 8, 7, 3, 4, 1}; + nums = new int[]{1,2,3,4,5}; tree = new BinarySearchTree(nums); } public void tearDown() throws Exception { + BinarySearchTree.Node node = new BinarySearchTree.Node(10); + tree.levelRead(node); } @@ -45,16 +47,18 @@ public void testPostOrder() throws Exception { public void testGetTree() throws Exception { System.out.println("树"); - int[] pre = new int[]{10, 6, 2, 1, 3, 4, 8, 7}; - int[] in = new int[]{1, 2, 3, 4, 6, 7, 8, 10}; - tree.getTree(pre, in,true); + int[] pre = new int[]{1,2,4,5,3}; + int[] in = new int[]{4,2,5,1,3}; + BinarySearchTree.Node node = new BinarySearchTree.Node(1); + tree.getTree(pre, in,node); + tree.levelRead(node); } - public void testGetMaxData() throws Exception { - Assert.assertEquals(10,tree.getMaxNode().data); - } - - public void testGetMinData() throws Exception { - Assert.assertEquals(1,tree.getMinNode().data); - } +// public void testGetMaxData() throws Exception { +// Assert.assertEquals(10,tree.getMaxNode().data); +// } +// +// public void testGetMinData() throws Exception { +// Assert.assertEquals(1,tree.getMinNode().data); +// } } \ No newline at end of file From 722da5daa8627e8215174f11f7bf8a3a7ed9f2ed Mon Sep 17 00:00:00 2001 From: byhieg Date: Wed, 5 Apr 2017 20:38:06 +0800 Subject: [PATCH 097/118] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A0=E5=90=91?= =?UTF-8?q?=E5=9B=BE=E7=9A=84=E9=93=BE=E6=8E=A5=E7=9F=A9=E9=98=B5=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E4=BB=A5=E5=8F=8ADFS=EF=BC=8CBFS=EF=BC=8Cdijkstra?= =?UTF-8?q?=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../algorithmtutorial/BinarySearchTree.java | 22 ++- .../byhieg/algorithmtutorial/GraphMatrix.java | 152 ++++++++++++++++++ .../algorithmtutorialtest/FindTest.java | 16 +- .../GraphMatrixTest.java | 56 +++++++ 4 files changed, 233 insertions(+), 13 deletions(-) create mode 100644 src/main/java/cn/byhieg/algorithmtutorial/GraphMatrix.java create mode 100644 src/test/java/cn/byhieg/algorithmtutorialtest/GraphMatrixTest.java diff --git a/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java b/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java index f2fc3c1..3aaffd5 100644 --- a/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java +++ b/src/main/java/cn/byhieg/algorithmtutorial/BinarySearchTree.java @@ -156,6 +156,8 @@ public void preOrder2(Node node) { stack.push(tmp.left); } } + System.out.println("结束"); + } } @@ -179,6 +181,8 @@ public void inorder2(Node node) { cur = cur.left; } } + System.out.println("结束"); + } } @@ -211,6 +215,8 @@ public void postOrder2(Node node) { while (!result.isEmpty()) { System.out.print(result.pop().data + "-->"); } + System.out.println("结束"); + } } @@ -232,9 +238,13 @@ public void levelRead(Node root) { queue.offer(current.right); } } + System.out.println("结束"); + } + + /** * 得到树中最小的节点 * @@ -270,14 +280,16 @@ public Node getMaxNode() { } + /** + * 从先序遍历和中序遍历中构造出树 + * @param preOrders + * @param inOrders + * @param r + */ public void getTree(int[] preOrders, int[] inOrders,Node r) { int root = preOrders[0]; -// if (isLeft) { -// System.out.println("左" + root); -// }else{ -// System.out.println("右" + root); -// } r.data = root; + int index = findIndex(inOrders, root); int[] left = new int[index]; int[] preLeft = new int[index]; diff --git a/src/main/java/cn/byhieg/algorithmtutorial/GraphMatrix.java b/src/main/java/cn/byhieg/algorithmtutorial/GraphMatrix.java new file mode 100644 index 0000000..16c7afa --- /dev/null +++ b/src/main/java/cn/byhieg/algorithmtutorial/GraphMatrix.java @@ -0,0 +1,152 @@ +package cn.byhieg.algorithmtutorial; + +import java.util.LinkedList; +import java.util.Queue; + +/** + * Created by shiqifeng on 2017/4/5. + * Mail byhieg@gmail.com + */ +public class GraphMatrix { + + Weight[][] graph; + boolean[] isVisited; + + private static final int UNREACH = Integer.MAX_VALUE - 1000; + + public GraphMatrix(Weight[][] graph) { + this.graph = graph; + } + + /** + * 图的BFS,算法流程 + * 1. 首先将begin节点入队 + * 2. 然后判断队列是否为空,不为空,则出队一个元素,输出。 + * 3. 将出队的元素的所有相邻的元素且没有访问的都放进队列中,重复第二步 + * + * 广度优先遍历,从V0出发,访问V0的各个未曾访问的邻接点W1,W2,…,Wk;然后,依次从W1,W2,…,Wk出发访问各自未被访问的邻接点; + * @param begin + */ + public void BFS(Integer begin) { + isVisited = new boolean[graph.length]; + for (int i = 0 ; i < isVisited.length;i++) { + isVisited[i] = false; + } + + Queue queue = new LinkedList<>(); + queue.offer(begin); + isVisited[begin] = true; + + while (!queue.isEmpty()) { + int current = queue.poll(); + System.out.print(current + "-->"); + for (int i = 0 ; i < graph[current].length;i++) { + if (i == begin) { + continue; + } + if (graph[current][i].weight != UNREACH && !isVisited[i]) { + queue.offer(i); + isVisited[i] = true; + } + } + } + System.out.println("结束"); + } + + + /** + * 图的DFS算法,算法流程 + * 1. 从begin节点出发,输出begin节点。 + * 2. 循环遍历所有与begin节点相邻并且没有被访问的节点 + * 3. 找到一个节点,就以他为begin,递归调用DFS + * @param begin + */ + public void DFS(Integer begin) { + isVisited = new boolean[graph.length]; + for (int i = 0 ; i < isVisited.length;i++) { + isVisited[i] = false; + } + doDFS(begin); + System.out.println("结束"); + } + + /** + * 假设给定图G的初态是所有顶点均未曾访问过。 + * 在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下: + * 首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。 + * 若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。 + * 若此时图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复上述过程,直至图中所有顶点均已被访问为止。 + * @param begin + */ + private void doDFS(Integer begin) { + isVisited[begin] = true; + System.out.print(begin + "-->"); + for (int i = 0 ; i < graph[begin].length;i++) { + if (graph[begin][i].weight != UNREACH && !isVisited[i]) { + doDFS(i); + } + } + } + + public void dijkstra(int start) { + //接受一个有向图的权重矩阵,和一个起点编号start(从0编号,顶点存在数组中) + //返回一个int[] 数组,表示从start到它的最短路径长度 + int n = graph.length; //顶点个数 + int[] shortPath = new int[n]; //存放从start到其他各点的最短路径 + String[] path = new String[n]; //存放从start到其他各点的最短路径的字符串表示 + for (int i = 0; i < n; i++) + path[i] = new String(start + "-->" + i); + int[] visited = new int[n]; //标记当前该顶点的最短路径是否已经求出,1表示已求出 + + //初始化,第一个顶点求出 + shortPath[start] = 0; + visited[start] = 1; + + for (int count = 1; count <= n - 1; count++) //要加入n-1个顶点 + { + + int k = -1; //选出一个距离初始顶点start最近的未标记顶点 + int dmin = Integer.MAX_VALUE; + for (int i = 0; i < n; i++) { + if (visited[i] == 0 && graph[start][i].weight < dmin) { + dmin = graph[start][i].weight; + + k = i; + } + + } + //将新选出的顶点标记为已求出最短路径,且到start的最短路径就是dmin + shortPath[k] = dmin; + + visited[k] = 1; + + //以k为中间点,修正从start到未访问各点的距离 + for (int i = 0; i < n; i++) { // System.out.println("k="+k); + if (visited[i] == 0 && graph[start][k].weight + graph[k][i].weight < graph[start][i].weight) { + graph[start][i].weight = graph[start][k].weight + graph[k][i].weight; + path[i] = path[k] + "-->" + i; + } + } + } + + for (int i = 0; i < n; i++) { + System.out.println("从" + start + "出发到" + i + "的最短路径为:" + path[i] + " 距离为" + shortPath[i]); + } + } + + + + + + + public static class Weight{ + int weight; + public Weight(){ + this(UNREACH); + } + + public Weight(int weight) { + this.weight = weight; + } + } +} diff --git a/src/test/java/cn/byhieg/algorithmtutorialtest/FindTest.java b/src/test/java/cn/byhieg/algorithmtutorialtest/FindTest.java index beef69c..53914a9 100644 --- a/src/test/java/cn/byhieg/algorithmtutorialtest/FindTest.java +++ b/src/test/java/cn/byhieg/algorithmtutorialtest/FindTest.java @@ -12,23 +12,23 @@ public class FindTest extends TestCase { int result; public void setUp() throws Exception { super.setUp(); - nums = new int[]{1}; + nums = new int[]{}; } public void tearDown() throws Exception { System.out.println(result); } -// public void testBinarySerachFind() throws Exception { -// result = new Find().binarySerachFind(nums,6); -// } -//// + public void testBinarySerachFind() throws Exception { + result = new Find().binarySearchFind(nums,2); + } + // public void testBinarySearchMinFind() throws Exception { // result = new Find().binarySearchMinFind(nums,1); // } - public void testBinarySearchMaxFind() throws Exception { - result = new Find().binarySearchMaxFind(nums, 2); - } +// public void testBinarySearchMaxFind() throws Exception { +// result = new Find().binarySearchMaxFind(nums, 2); +// } } \ No newline at end of file diff --git a/src/test/java/cn/byhieg/algorithmtutorialtest/GraphMatrixTest.java b/src/test/java/cn/byhieg/algorithmtutorialtest/GraphMatrixTest.java new file mode 100644 index 0000000..ea0f6d3 --- /dev/null +++ b/src/test/java/cn/byhieg/algorithmtutorialtest/GraphMatrixTest.java @@ -0,0 +1,56 @@ +package cn.byhieg.algorithmtutorialtest; + +import cn.byhieg.algorithmtutorial.GraphMatrix; +import junit.framework.TestCase; + +/** + * Created by shiqifeng on 2017/4/5. + * Mail byhieg@gmail.com + */ +public class GraphMatrixTest extends TestCase { + + GraphMatrix graphMatrix; + GraphMatrix.Weight[][] weights; + public void setUp() throws Exception { + super.setUp(); + weights = new GraphMatrix.Weight[5][5]; + for (int i = 0 ; i < weights.length;i++) + for (int j = 0 ; j < weights[i].length;j++){ + weights[i][j] = new GraphMatrix.Weight(); + weights[j][i] = new GraphMatrix.Weight(); + } + + weights[0][1] = new GraphMatrix.Weight(100); + weights[1][2] = new GraphMatrix.Weight(10); + weights[2][3] = new GraphMatrix.Weight(20); + weights[3][1] = new GraphMatrix.Weight(25); + weights[2][4] = new GraphMatrix.Weight(20); + + weights[1][0] = new GraphMatrix.Weight(100); + weights[2][1] = new GraphMatrix.Weight(10); + weights[3][2] = new GraphMatrix.Weight(20); + weights[1][3] = new GraphMatrix.Weight(25); + weights[4][2] = new GraphMatrix.Weight(20); + + + graphMatrix = new GraphMatrix(weights); + } + + public void tearDown() throws Exception { + + } + + public void testBFS() throws Exception { + graphMatrix.BFS(4); + + } + + public void testDFS() throws Exception { + graphMatrix.DFS(0); + } + + public void testDijkstra() throws Exception { + graphMatrix.dijkstra(0); + } + +} \ No newline at end of file From 0c45e5b56da4007522029f3bf4f6b71c87ee2050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E7=90=A6=E5=B3=B0?= Date: Thu, 6 Apr 2017 11:27:47 +0800 Subject: [PATCH 098/118] =?UTF-8?q?=E4=BF=AE=E6=94=B9README=E5=9B=BE?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JavaTutorial\347\233\256\345\275\225.jpg" | Bin 176782 -> 353150 bytes .../algorithmtutorial/BinarySearchTree.java | 15 +++++++++++++++ .../cn/byhieg/algorithmtutorial/Sort.java | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git "a/images/JavaTutorial\347\233\256\345\275\225.jpg" "b/images/JavaTutorial\347\233\256\345\275\225.jpg" index e6c8c449c4b3bcaa7849c1ab03bdb7fab734de37..a4603a6e1fee9a5143d9d3147e1e181688b9c5e7 100644 GIT binary patch literal 353150 zcmeEubySq^y0#*SN~s7)BPkuyH6Tb02-1yoGc*jXCSam(+lCcc*lB5B0tL z&N=(rYoFu(_Wtu*>$sNG;vL@idG6=Fulu^Ldjb^ROJY4CdUEgHJuGP{aYf*h>%Dtu z{Etw8pIGyoy#+qqcTkjkd#|vMWCQr-v8|Mb!@Ya>Ga$3%L9@3u_Ku$(R7V7>P; zaQUl$@2Yz!w@<>%I*#t$M|~>tZ+u_^t}+Yv!~XZKdP*@Ew)Ss574XaIFKo*u#L)kx zwcrgFQFop20~6mOYThhsNV(S8W>rIMUI0&L%X?p5tv}&DpM`1R%G$!3ZIGd8AH!3S zU;+<%AM&@u{J*l+S9BB_eh*x*C!IWb$o{$jn=)*I@nGFW64eczzr#)4F9M_3sWbv~ z|EK4_vNns?_Fh;Teu6l6tMC8(=h1SX3py>|2u%I^8;mfs^`21Svygvb#Tpw>ywR-D zQSP>}aS#=IhX0)6_)}Uz;0bTmy#T+yi=PhT|H=c3KbrA$V_o!l^w$fqqc$}+`zAjW zXwy{xT88nHPvG8J=s&p|h!_QvpjC55u(#eU;UN>Xpzis!I?A~CU0{9lL`f=4;(K5} z(x=_s-^_YiFju11(_LZ+63)lIkD8$7)6m~{IUz8S7-6>l5$932=pVze@i8iOx9#t~ zSG9$E&Y#^^@SojrF*lkSz>76|D>c0Z;HyesFr(=x&=dXW0p}#rrw!(%HO-22VLywk9cG5Y0(KxJZQ52^NF`b`Lyr4@ZL6hhVt&QMS7m>TRbmA^!zOp z*MS=x(SQ2aOaGIb{D)X+%tN6jLTvte_FrrHFD9#X)EP(iziq((bkROHnj79uxS;4^ zRW(Xs@ZI12?TSL>99na;?zdDBg!i|+_?}uMH3e5_Vus<*H-XI(_8-fKjgW%--@Vwr zAKHwL(A+*=HOb#D^AYtah`^#C`8O9qE zQJC3FebF!fuoM5UZy(-&j`hEf_IK;~zq|H#vG~`z{BJ=1;|c!Xv-Y>#_@DXZ|Bp2C z^WB$!IUB!ceTsid$;-=2L2+OyZ8eWz-fj(QY#jNNqev$kvtQ9S`Y@T-&gxQcx}4Xv zZ-!=$-ng5ZfHetJ?5+3lW3FQHX;))oB>l=4&HxY30?f+# zts+oW7f1PlO5SMk*WJ}#Vq%{B;rE@9^x%W%G}a9XJ5(#8AAG@Zrh-MYhdegg4IURT zZt2`cWdp+A$7vqOY6nvm-Jc3IvKj;gZ$`)3f(gT^%{ibfD;?q8x}i>y(Om(LTAYFO zZg@%6f&2@d{LeU`aRW6;$lZCRE2BG_McD1QV|={7e;#BV=jh?M>Dd3k<_;qPxI^Ia z7k~fxpI$px7Y=Lvi9+5t+rSqrdWiMaRc@DGiqI_mrFTgnZ();>eRP~%%cZQ|m}p@! z3F3a0=J(0`)vkjcJH@N$PS&!VGj$thUys)61oKoA`vsgn;Kn_S_nO~tPK9b-qE~>d zZlR{b>>tb~kK5a*jM9H4Yw^e@a(o~j+g`#a_netIj%*Jl2SE=f%4cPQ8oWiW&JPMO*>;f7l|ZhB z8z#QY6C%z+?TonET7M#k&5-~nOK%nbvQ;LTMA`y=YLR=N#_=cy_nlf_{xdxMsE+jh zMYd~&M`Vpv=gHPM^{d9>Z_AxZ7l}aW*?#=1s3VDBe%RpOP z+gQiJg@uHwr@y<#*l)Esb`?pu`~7eZ+Ab5 z=9H1cSAzo|4R|B%d24ScV;e+%X;&W+)$oc_#GydWCR>xgnF)I&g!n8y%Ga#E@{;N( zGnJ%qULK z)*-d{6d#{g-?gz}3YQ6N4<#MdoSB`)Q12yu5vW8bZ|0j}uZy@sJ5ic^*KK$h`W~x2GPNX0=qs1?Fn+h018DPCF-x@y&>=TsfN-NltdCj1a z-}wq9fty%ZShL6N51rIY6jktW0pL6W;N^?@p=+OICSB8FlKW-TQu$v#x@YCh1wP zf6c#Btgt}YEJ+k`Z$wHGTeHgQRFIQ1j**1dNE~@gn9BD!YYT0$tqklf*#e;1N>u8y zok|ui%TP8WL%t42)dndTizE1*AF3_y1RuU z3%;{E>eM)X@WKrK8uTLQO@JR6*)stmVw>Tx5{vZ;ub(zLEqxt|6Vv_kdcpHIv( zIiy`>HQE<}xj{f$cy^j%L7p*1SMof5Xw$`+2ES}nY zNFq31B~MqWYgwI$++pW%VT*^#kEj&0-qT~b?6$E{nN|18EY4$u*V5GJk00rsu=W{_ z1P7Bz1N)=Q`O*4rrNyCE4D;a(HRckUpG1!DHj&~E6)7ogQ_6!01D*1rZ~9s2yh*CB zt6mSJ=yXfskmsVw#tKKH)XOxtiO3*3xhpi^rgSmM625$i>x6Ett@y&Pz7%3VD0M0a zzfK&bIV51pH~1Wbe||9@eCYAUJqqo}q(7Ob+ba5`4VNy2l>et*aL$bvGak5jHCkn} z*fu=%hI=GNdFe6GMERCnCMBf)R1DTIKmj&LC7stUZ&M%5Dea+e{CS4dLU7h)+lOJ6Qf9^RQ zLo3v&NB;iRZEsu}v%gt(}6Yb8Hfw3wPoux!3L`EH9gU1)n7l#>Pzdu^rX3A>RJy&PU&&G<7 zojh9WH!n&5B~5DGT=AOP>K;2um;1v}O0EtJe1=qP8g#qcoBGZD^Aaj%Ve3?E>&K-= zol~`Y6j~A-5AUx%13D`xndR;sP4uUwOr^2i8tYB*Maso-C<#Y}j)@mROK))P_$ox3 zGs(S&h8(f=^gzRH_ytpO+`Cg1RE4xeg*s)L4R%JyxL6T1V3u0^U8Jdh+iU29$+9(0 znvB*E6ld?JJ3qNE->*FCXED9R)t{FPn|x}k{^-P`jFG zeysSC2>+JtcCswm$$6BeO%dugoEhwA8AY$eBGx9WnKqJ#uv@AjvOQj3z#!0Fy~vRm z{^8|I>!;|E$nWxol-tqv)>=z%H)f_nvWQ8eG&Y32oP^IK8@zU^X*jq@Q{%K}{qp1K zekbmdi&PKxFcH>#bl6_<&zc%dLdg2zq0C3KfJ1#(*Pox*yOhl7$OPQP>%}7A5^`}H zblRn6pKjQe8@!QlDZ{eHN&=iEZOdAZ8+cdk?A8>4I}wU1hYO`~;Q z$Djg9qgLbw1+CW$w|SiU(zbK)>zSCY>dl+_t+E=1KFLs$IQAWPYuSj*Wa{Hn)g^E3 zLtjKv#uyn9QH|{l36}&$`s*JuoLBCb+@5=j?~YFV;fro3#I2#XM4eFhY6fs zZ=@?Zn_db#6@Ay{qx?d(%ineDiPC#*ucuVFM#&qBKwekb&Op70DqUg7Wx-Rm7CifM9>fMJ}FVvL48E=l=KtNS;MEaGMT=2e>nDk1+jr9g~pH( zQeIK%VJ57ll&E6!>hMS&7eSm?=ylw&aMDn4ms&=jr-|C`*SnwX=7Q7TCvsz3*=5_% zsiN-gk{Qo2(t%10D&Y9$8HKQ!A2<2=8fAo<$Mr3zc;AToSuW$)h*2K3KtEMjdLf98 zIW&5ay-9qYGG68E6vIgA*?i_#;bE}O_C?SdgIDdZKx6QU-rTpr)`=Kt!Zgco%@N?f^>awW z2c8%{uB@TAO&1sdO7Vk3Kx{j`@90GoZ15>G?V0h_`~54p9p}0 zS*OO~tP1#B%>Ny+@Si{XKwvhL9xFV!f4mV<+2aJ{8UUMg_$SII3m)J+3bQr^5}83g z*}`y^e33RHJ^5;=H3-=ZVA!py7s@(?g@qe$jFkN$wBMSrG&N(ky?&aWfyN7UYF*Ak zs;WY*>|Q7 zXYL^JC%xF8kPCJT`(B>yRC`{kO4$}yg~~6sNZYUV#nU_BU-y_Sbw{%bU3yoii6ao5 zFq(0{de?)u78f0rQ!aZm?_r!dg0)75QuNK{&afD>I=dw#@LHoi0J1qaK2-EaiX;sk zwx}|144Dq>3EG^Yf6$S_NM$NYmb`5V^UN5|44Qb01aM!WjsQ?d+}3tUH)LSE0mrMo zY83iS(U-+}(Bp_~39+YNO~=bj`+*!u-EpWKj?C(e$dY>Y`c~1nBaGhbYMkYlu{w@F z5F9=`C=e$9{$gqn=r+mo;Y%W(+meGSr-n`9z4?X)t4V`V#T@(58R%h-*zm`;@=gm& z6Mv+`=ISn-(Pf$D0lAQy2a ze1ZXHbm~zn+n+1YQ(N6nFX$hvl&N2Is8WUD*ocXV(d2aGfAc7>UiL@JQ)OvzKMTggl(ZeYuCjieB5YLf#MUg|#pYhU7Qla4f0Z6xHj=0_bnZ;X}6jGm3M;e96+S{(Rw zy*Xf2Y}Hx>+c&N3wpt3nZAV->A8#m`z?5iM_sh6RW$LxswgWWNw(DJYw+WfOs*c^S zA7VzGS2`EZ7qBq}h@mFPQCI|2A6nn{ zbkfI>m+$ngdhc?LtnkMn%Vvj{PFLLjpcNG-$o+8E?f97rnDN$hZJyCvGxG%Qnx$NT zvuRO6{UT1NwYfP>A%)VfP^o5|w7_y>@$05&cy!A9#M0$9#HZp(4N;$~$P@KNKh3!io#nO`m^fsw zqc-lsJX-BjPTnG>ohkO3E%bKACcTjx%b>2o&IgVra(UF_FRcM$cpiF^*4^BIfE z;WV#u!arbB|FT>BQldyPJcJp|szbtMu-=5`AQ^(>);Ns*%EpY9N&1PG^=V?uO!59c zOQJvr7?!!buuyF@**^yUb+SGst!L}9n()q~dtJg*WsJO3SI=|9pn|&iWcZ|B3_(W2 zwQ$S~Uo3Jvi6G$})|DQ<@>;Ayo(ighA8&3@ODY{M9Ir_*!wCjd81-mbyD+V%T}qRT zUmG?xH;q=LDh#rj7S3pt8Y#U|e`4?&{k?9wm+lGVece@_QWZjYuvoWV0$?#PaB%eM zExtPD$aGHqmb%^ABmdEMzW)44J+2#=60vDLX6@V6oK zbbDidx=JNmy%h$FR2t3d>eSsdVWg07P=OZ~R%priR(ioF=hjmCdn@C)S6LN0wlQKo zRGJ<4iET8>ZIe7E#cH#SSl~=5{6lD8zBbIb^9+TXpkE;ts;)0};Z0luB9lB$csA`0fi{*AJ6FD!3ZCR z$5IPIp2FIjoF;+Ky3li%+P;r?(=x1t$iNvQXe_xeUZ0J0;<`KUDRVu`U>iz*Y?vjR zY?&QS^|f8odrUXf{lsE`HBT)Uj!F1NC0AL6G*`sgUfB*4&AD2%qB2bqr$7FU5~R%M6JfM?}GkJX({Ys4XK{PchgArfVsOipPdr(nB zAiimT(s20)&8zF{lM~l+_QQY*&49_W9_~W*o3vNm3fwY%(M2Ma+k7nAyx!}L!jsG& z5?z6PGgqQL*?c2X5rbtjSC?W;SW{iS(hwlJZiq5Z)PerZd(KZ1iekHo@38d z7Qw5THcQ?T6UOtybF#XAayGC+A2t*%2z}B_Z*Nv)ss=z^U-XkfQ$mxj$PDLMH=w(Z zUh|FYjASmTx~-677U76*AO_WFxmd=3&-;b?s72_0E%mCZdqbuS=L^aU<}#SsPp2bt zw>FDW%XOTJ36?yLL^wVe_E3 zt&E)m$c&T^q%x!X4L4J{*hj0q5U@lJkvy>Xl>o3b3wmz&$EFpa37}}y1#7hs$*sKx zkFQ-wG3F$GXzI=IFaUBo$v)F7rYlp?7%Su!OFc;(qlB8kuvDvMoVY|#CKHQwecO=m zW`FE;T&xTRn7)sf?f163U}z##YEUadMSFq|e;%4tL;-h`$)VQZ zc&~gAqe||`L#zvJy<{`>22tGWbEzf7wSP>=#qp9KtjBc9CgWY#6Bb=gdC(8%M7JIO zx>C^Z+^B9kd7`3Ci1l3g2WPg(W6^63lclpR_})}ObXIiqruAfQfpUR>-BpZ5I2NuU zI5owSyyaz-S{*|-n|nwCtR+kkDl_@wx(glc!^ z8z9a+Muf#qTeLJxG-2Rq`Yh~FFuFL0q4;Nx2D5J+Yz3i@8RG4PfkS z-6U;o9n5+-cCE*t?ogtfI{?|_h%4|X7kKPo)Nr?*i5uhbqW6jX^f?nwAS<)V#`KMf zrY2pl=~rGJT4=I#P)25;91bO60`fu>062b1n@i-B(iiC+R*E7dU+wK8$Zoo7wJ!^+ z4YLaOB0bdNkNm$Lt@b3@IN#6@uV#1Eiak8Jc9_N=)<4w2kf!0Z9@l(N0^&E+Y;gy7 z+H6lX8~9xVP_9QjXvL6G6{|V~>unU>p{m zI`56Cv@Mt9nfjyS-3tF_(@zD?6TAET%1mUd9o8x}O@Y2)uIK}p)Z!OVyE7QRTSVr% z0(Es`XD3aQ`Vpoq4fzW9ZTdko`mN1Nx?7|68v7MSqTFM1osd(#%efzsS_1aVVKwa} zd=A8=m>G;-kEp}=|rBA3jz#JX0PyICIIVYH%H9n$Vr_Bi}!7ro$c6_ zh%~UuUc8{!)E<&$KFK`=SolMHFsTG+qS~<5O;WS=y(g6D>Q-1cwsx|e8F{+PB6lc~ zuU?sMQ}0*gD7o}|Ibi9~D5wn;UtY+4)i|^0dl*RQste4UB){cFbuu+f6K3eI-H>@)&>}?PLlz=zrwcK2@<&bbh^rkWIL3HI@jp_n{_x z9^As%Al}BRYWuV2>^8fsApUSlkwfT32AJUZ-IEn77nd`ZS+}^%hb-D`Y9JT?_j&-m zTcHcIcgPdsJPQ`ZD_M@`>4o2KwA;V$xcmBDqY`skr4|`yqjDJcDgKmVw{`)UN0NS2 ziKaqVd}J{@r8n|~hN{54Onx*)I1IHVBZxqTMzG*uJ-qqQqgZ#OSm%-zQ^Rknn(&PY zy#J&>Ss;&8h9l2PVSQ^Wt3f*<)KGcu$C*YvHiV{I0X|r4SB7ITuCyf`E$kb3BAQfp zp`4mh4(NkS?`erPA+aw%xzZA9G2p9(uUi4;S*!_{Cib4qUi`mfcKVoHeyF_9UgsqjCx~x*2vV8kYz9-Q3)7 zmiVr7GR$#({`PBNx%v3PWx%{lng?UE0*5vT28fEOQ~=-ac+5-i$56SCN{LD)sP9rw^cEMvh(HEEF{c>)AA+lh8&DClgPNCX|WZYD<&4! z@G-@;jB4uh=R#hu)RbAsK0xvZHjeifxjqik9?Gcnj8w|EQput9*!r}b<@dF|=Y3df zofcAP^4auuZu+|N2~ou{Jt+Z8LRpg8%YJ(enn_=E8ltY1&xP7{mEz4YQR6~iR=U)X zKi-SyCKs;BeK{1FwkK>ZyVG(j6Ix%QF2?wf;ySEcK7iGi>tAgaQZG__kFPQe zA)M!n-Mc1L5ePRfv(;mIRA7cR-#a*6 zj;o%dRhqQ}D+lbO+8uIQ%PokI;|YapcFU82xP`VZj=s4xzz)1Y)GdzRQ{IiHM4k?q zrkKbd$b^X?)(vxgCq8(TjQCM2_T0LIBF7W zsoq{i7!k%{-v9u&Lb}Au1=8H%=9FtWSu#{8qe0vzg;HN<{vso#8Nq(3__`vsKN(bO zxrPm8AnM}+SbQh7Dyg9iZG&m}q@Vlp(@!s-e_Q6E^DFEs|0m7s(`eLmuZ1`aOBdZs zI__11sdEu2bD_y=)zhb(q^vZbb?aOUr!tKCq8OurZpzllZm>$b+R857YhpSW$P