From 5a0471dc7323bb7bc94669cf9f9d121fe082fd6b Mon Sep 17 00:00:00 2001
From: cicadasmile <1327880701@qq.com>
Date: Mon, 9 Mar 2020 20:54:52 +0800
Subject: [PATCH 01/29] =?UTF-8?q?Java=E5=9F=BA=E7=A1=80=E7=AF=87(01)?=
=?UTF-8?q?=EF=BC=9A=E5=9F=BA=E6=9C=AC=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B?=
=?UTF-8?q?=EF=BC=8C=E6=A0=B8=E5=BF=83=E7=82=B9=E6=95=B4=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 8 +++++-
java-se-base-parent/model-data-type/pom.xml | 15 +++++++++++
.../java/com/data/type/HelloDataType.java | 7 ++++++
.../com/data/type/block01base/IntType01.java | 12 +++++++++
.../com/data/type/block01base/IntType02.java | 18 +++++++++++++
.../com/data/type/block01base/IntType03.java | 9 +++++++
.../com/data/type/block01base/IntType04.java | 8 ++++++
.../com/data/type/block01base/IntType05.java | 10 ++++++++
.../com/data/type/block01base/IntType06.java | 12 +++++++++
.../com/data/type/block01base/IntType07.java | 13 ++++++++++
.../com/data/type/block01base/IntType08.java | 25 +++++++++++++++++++
java-se-base-parent/pom.xml | 7 ++++++
12 files changed, 143 insertions(+), 1 deletion(-)
create mode 100644 java-se-base-parent/model-data-type/pom.xml
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/HelloDataType.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType01.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType02.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType03.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType04.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType05.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType06.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType07.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType08.java
diff --git a/README.md b/README.md
index 8cf0f34..3eed164 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,10 @@
-# 参考文章
+## 参考文章
+
+### JavaSE基础篇
+
+[Java基础篇(01):基本数据类型,核心点整理](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484444&idx=2&sn=c5590ea2d71a0a358d2f9cd96c3c2b19&chksm=fdf450a4ca83d9b2383032c1aa354a59a0ca6d52981f2a58d6d3142bde7ed1605b4fcde3b4d9&token=1530600379&lang=zh_CN#rd)
+
+### JavaEE基础
[JavaEE基础(01):Servlet实现方式,生命周期执行过程](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484304&idx=1&sn=dd6b6852e35031dd07f70d441f3ddc85&chksm=fdf45728ca83de3e158597030cf46b1677eccf533f9e1412690cd64b0ec0cce544711ceabddb&token=1248678182&lang=zh_CN#rd)
[JavaEE基础(02):Servlet核心API用法详解](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484309&idx=1&sn=fc8237aef2f246f85b978561f4b37e1e&chksm=fdf4572dca83de3b8affdf4a9a8c8b3c18e4c5203c3e663e0bfaeb53788d3e2d26fa829bb8c6&token=1248678182&lang=zh_CN#rd)
diff --git a/java-se-base-parent/model-data-type/pom.xml b/java-se-base-parent/model-data-type/pom.xml
new file mode 100644
index 0000000..923f5a2
--- /dev/null
+++ b/java-se-base-parent/model-data-type/pom.xml
@@ -0,0 +1,15 @@
+
+
+
+ java-se-base-parent
+ com.java.se.parent
+ 1.0-SNAPSHOT
+
+ 4.0.0
+ com.data.type
+ model-data-type
+
+
+
\ No newline at end of file
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/HelloDataType.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/HelloDataType.java
new file mode 100644
index 0000000..43f1baf
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/HelloDataType.java
@@ -0,0 +1,7 @@
+package com.data.type;
+
+public class HelloDataType {
+ public static void main(String[] args) {
+ System.out.println("基础数据类型模块");
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType01.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType01.java
new file mode 100644
index 0000000..41a065a
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType01.java
@@ -0,0 +1,12 @@
+package com.data.type.block01base;
+
+public class IntType01 {
+ public static void main(String[] args) {
+ System.out.println("进制位数:"+Integer.SIZE);
+ System.out.println("最小值:"+Integer.MIN_VALUE);
+ System.out.println("最大值:"+Integer.MAX_VALUE);
+ System.out.println("进制位数:"+Double.SIZE);
+ System.out.println("最小值:"+Double.MIN_VALUE);
+ System.out.println("最大值:"+Double.MAX_VALUE);
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType02.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType02.java
new file mode 100644
index 0000000..3297a94
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType02.java
@@ -0,0 +1,18 @@
+package com.data.type.block01base;
+
+
+public class IntType02 {
+ public static void main(String[] args) {
+ // 自动转换
+ int i = 112 ;
+ long j = i ;
+ System.out.println(j);
+ // 强制转换
+ double d = 13.14 ;
+ int f = (int)d;
+ System.out.println(f);
+ // 类型提升
+ long r = i * j ;
+ System.out.println(r);
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType03.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType03.java
new file mode 100644
index 0000000..52404ba
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType03.java
@@ -0,0 +1,9 @@
+package com.data.type.block01base;
+
+public class IntType03 {
+ public static void main(String[] args) {
+ Integer int1 = null ;
+ Double dou1 = 13.14 ;
+ Long lon1 = 123L ;
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType04.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType04.java
new file mode 100644
index 0000000..290d530
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType04.java
@@ -0,0 +1,8 @@
+package com.data.type.block01base;
+
+public class IntType04 {
+ public static void main(String[] args) {
+ char cha1 = '知';
+ System.out.println(cha1);
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType05.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType05.java
new file mode 100644
index 0000000..0e359bd
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType05.java
@@ -0,0 +1,10 @@
+package com.data.type.block01base;
+
+public class IntType05 {
+ public static void main(String[] args) {
+ short s1 = 1 ;
+ // s1 = s1 + 1 ; // 变异错误:s1自动向int类型转换
+ s1 += 1 ;
+ System.out.println(s1);
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType06.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType06.java
new file mode 100644
index 0000000..8cafae5
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType06.java
@@ -0,0 +1,12 @@
+package com.data.type.block01base;
+
+public class IntType06 {
+ public static void main(String[] args) {
+ // 存在精度损失问题:0.30000000000000004
+ System.out.println(3*0.1);
+ // true
+ System.out.println(0.3 == 0.3);
+ // false
+ System.out.println(3*0.1 == 0.3);
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType07.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType07.java
new file mode 100644
index 0000000..3a2383b
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType07.java
@@ -0,0 +1,13 @@
+package com.data.type.block01base;
+
+public class IntType07 {
+ public static void main(String[] args) {
+ // float 声明
+ float f1 = 12.3f ;
+ // double 声明
+ double d1 = 13.4 ;
+ // 向下转型,需要强制转换
+ float f2 = (float) d1 ;
+ System.out.println("f1="+f1+";d1="+d1+";f2="+f2);
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType08.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType08.java
new file mode 100644
index 0000000..6c30db5
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block01base/IntType08.java
@@ -0,0 +1,25 @@
+package com.data.type.block01base;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+public class IntType08 {
+ public static void main(String[] args) {
+ BigDecimal dec1 = new BigDecimal(3.0) ;
+ BigDecimal dec2 = new BigDecimal(2.11) ;
+ // 精确加法运算
+ BigDecimal res1 = dec1.add(dec2) ;
+ System.out.println(res1);
+ // 精确减法运算,并截取结果
+ // HALF_UP:四舍五入
+ BigDecimal res2 = dec1.subtract(dec2);
+ System.out.println(res2.setScale(1, RoundingMode.HALF_UP));
+ // 精确乘法运算
+ BigDecimal res3 = dec1.multiply(dec2) ;
+ System.out.println(res3.doubleValue());
+ // 精确除法运算,并截取结果
+ // ROUND_DOWN:直接按保留位数截取
+ BigDecimal res4 = dec1.divide(dec2,2,BigDecimal.ROUND_DOWN);
+ System.out.println(res4);
+ }
+}
diff --git a/java-se-base-parent/pom.xml b/java-se-base-parent/pom.xml
index a3f9feb..b9ae561 100644
--- a/java-se-base-parent/pom.xml
+++ b/java-se-base-parent/pom.xml
@@ -12,5 +12,12 @@
java-se-base-parent
pom
+
+
+ model-data-type
+
+ model-multy-thread
+
+
\ No newline at end of file
From cd0100533d624408b20303860ec5f52e0d2054d5 Mon Sep 17 00:00:00 2001
From: cicadasmile <1327880701@qq.com>
Date: Mon, 9 Mar 2020 20:57:57 +0800
Subject: [PATCH 02/29] =?UTF-8?q?Java=E5=9F=BA=E7=A1=80=E7=AF=87(02)?=
=?UTF-8?q?=EF=BC=9A=E7=89=B9=E6=AE=8A=E7=9A=84String=E7=B1=BB=EF=BC=8C?=
=?UTF-8?q?=E5=92=8C=E7=9B=B8=E5=85=B3=E6=89=A9=E5=B1=95API?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 1 +
.../com/data/type/block02string/String01.java | 11 ++++++++
.../com/data/type/block02string/String02.java | 25 ++++++++++++++++++
.../com/data/type/block02string/String03.java | 26 +++++++++++++++++++
.../com/data/type/block02string/String04.java | 22 ++++++++++++++++
.../com/data/type/block02string/String05.java | 17 ++++++++++++
.../com/data/type/block02string/String06.java | 15 +++++++++++
.../com/data/type/block02string/String07.java | 10 +++++++
.../com/data/type/block02string/String08.java | 9 +++++++
.../com/data/type/block02string/String09.java | 24 +++++++++++++++++
10 files changed, 160 insertions(+)
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String01.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String02.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String03.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String04.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String05.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String06.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String07.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String08.java
create mode 100644 java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String09.java
diff --git a/README.md b/README.md
index 3eed164..365f750 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,7 @@
### JavaSE基础篇
[Java基础篇(01):基本数据类型,核心点整理](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484444&idx=2&sn=c5590ea2d71a0a358d2f9cd96c3c2b19&chksm=fdf450a4ca83d9b2383032c1aa354a59a0ca6d52981f2a58d6d3142bde7ed1605b4fcde3b4d9&token=1530600379&lang=zh_CN#rd)
+[Java基础篇(02):特殊的String类,和相关扩展API](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484444&idx=1&sn=2cd50529d3d6ff97a9efce6158891c7c&chksm=fdf450a4ca83d9b29f3edf3c4999885278f7e9130a71b1d2f7f54057dcb07a3b95964547e862&token=1530600379&lang=zh_CN#rd)
### JavaEE基础
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String01.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String01.java
new file mode 100644
index 0000000..35f6bb2
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String01.java
@@ -0,0 +1,11 @@
+package com.data.type.block02string;
+
+/**
+ * 字符串声明
+ */
+public class String01 {
+ public static void main(String[] args) {
+ String var1 = "cicada" ;
+ String var2 = new String("smile") ;
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String02.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String02.java
new file mode 100644
index 0000000..a46711b
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String02.java
@@ -0,0 +1,25 @@
+package com.data.type.block02string;
+
+public class String02 {
+ public static void main(String[] args) {
+ String var1 = "cicada" ;
+ String var2 = "cicada" ;
+ // true;true
+ System.out.println((var1==var2)+";"+var1.equals(var2));
+ String var3 = new String("cicada");
+ String var4 = new String("cicada");
+ // false;true
+ System.out.println((var3==var4)+";"+var3.equals(var4));
+ // false;true
+ System.out.println((var1==var4)+";"+var2.equals(var4));
+ String var5 = "ci"+"cada";
+ // true;true
+ System.out.println((var1==var5)+";"+var5.equals(var4));
+ String var6 = new String02().getVar6 () ;
+ // true;true
+ System.out.println((var1==var6)+";"+var6.equals(var4));
+ }
+ public String getVar6 (){
+ return "cicada" ;
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String03.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String03.java
new file mode 100644
index 0000000..38b77fd
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String03.java
@@ -0,0 +1,26 @@
+package com.data.type.block02string;
+
+import java.nio.charset.Charset;
+import java.util.Arrays;
+
+public class String03 {
+ public static void main(String[] args) throws Exception {
+ String value = "Hello,知了";
+ // UTF-8
+ byte[] defaultCharset = value.getBytes(Charset.defaultCharset());
+ System.out.println(Arrays.toString(defaultCharset));
+ System.out.println(new String(defaultCharset,"UTF-8"));
+ // GBK
+ byte[] gbkCharset = value.getBytes("GBK");
+ System.out.println(Arrays.toString(gbkCharset));
+ System.out.println(new String(gbkCharset,"GBK"));
+ // ISO-8859-1:表示的字符范围很窄,无法表示中文字符,转换之后无法解码
+ byte[] isoCharset = value.getBytes("ISO8859-1");
+ System.out.println(Arrays.toString(isoCharset));
+ System.out.println(new String(isoCharset,"ISO8859-1"));
+ // UTF-16
+ byte[] utf16Charset = value.getBytes("UTF-16");
+ System.out.println(Arrays.toString(utf16Charset));
+ System.out.println(new String(utf16Charset,"UTF-16"));
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String04.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String04.java
new file mode 100644
index 0000000..6c4f66a
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String04.java
@@ -0,0 +1,22 @@
+package com.data.type.block02string;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class String04 {
+ public static void main(String[] args) {
+ // 指定位置拼接字符串
+ String var1 = formatStr("cicada","smile");
+ System.out.println("var1="+var1);
+ // 格式化日期:2020-03-07
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ Date date = new Date() ;
+ System.out.println(format.format(date));
+ // 浮点数:此处会四舍五入
+ double num = 3.14159;
+ System.out.print(String.format("浮点类型:%.3f %n", num));
+ }
+ public static String formatStr (String ...var){
+ return String.format("key:%s:route:%s",var);
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String05.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String05.java
new file mode 100644
index 0000000..5237992
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String05.java
@@ -0,0 +1,17 @@
+package com.data.type.block02string;
+
+public class String05 {
+ String var1 = "hello" ;
+ int[] intArr = {1,2,3};
+ public static void main(String[] args) {
+ String05 objStr = new String05() ;
+ objStr.change(objStr.var1,objStr.intArr);
+ // hello 4
+ System.out.println(objStr.var1);
+ System.out.println(objStr.intArr[2]);
+ }
+ public void change (String var1,int[] intArr){
+ var1 = "world" ;
+ intArr[2] = 4 ;
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String06.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String06.java
new file mode 100644
index 0000000..0e13a29
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String06.java
@@ -0,0 +1,15 @@
+package com.data.type.block02string;
+
+import java.util.UUID;
+
+public class String06 {
+ public static void main(String[] args) {
+ System.out.println(StringUtil.getUUid());
+ }
+}
+class StringUtil {
+ private StringUtil(){}
+ public static String getUUid (){
+ return UUID.randomUUID().toString().replace("-","");
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String07.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String07.java
new file mode 100644
index 0000000..61cdf1c
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String07.java
@@ -0,0 +1,10 @@
+package com.data.type.block02string;
+
+public class String07 {
+ public static void main(String[] args) {
+ StringBuffer var = new StringBuffer(2) ;
+ var.append("what");
+ var.append("when");
+ System.out.println(var);
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String08.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String08.java
new file mode 100644
index 0000000..f4b210d
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String08.java
@@ -0,0 +1,9 @@
+package com.data.type.block02string;
+
+public class String08 {
+ public static void main(String[] args) {
+ StringBuilder var = new StringBuilder() ;
+ var.append("how").append("what") ;
+ System.out.println(var);
+ }
+}
diff --git a/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String09.java b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String09.java
new file mode 100644
index 0000000..6ff506d
--- /dev/null
+++ b/java-se-base-parent/model-data-type/src/main/java/com/data/type/block02string/String09.java
@@ -0,0 +1,24 @@
+package com.data.type.block02string;
+
+public class String09 {
+ public static void main(String[] args) {
+ String var1 = new String("A");
+ String var2 = new String("B");
+ StringBuffer var3 = new StringBuffer("C");
+ StringBuffer var4 = new StringBuffer("D");
+ join(var1,var2);
+ join(var3,var4);
+ //A<>B
+ System.out.println(var1+"<>"+var2);
+ //C<>DD
+ System.out.println(var3+"<>"+var4);
+ }
+ public static void join (String s1,String s2){
+ s1 = s2 ;
+ s2 = s1+s2 ;
+ }
+ public static void join (StringBuffer s1,StringBuffer s2){
+ s1 = s2 ;
+ s2 = s2.append(s1) ;
+ }
+}
From ffe33b33ed82256216e20b4f56c0b2553ac07074 Mon Sep 17 00:00:00 2001
From: cicadasmile <1327880701@qq.com>
Date: Mon, 9 Mar 2020 21:00:03 +0800
Subject: [PATCH 03/29] =?UTF-8?q?Java=E5=B9=B6=E5=8F=91=E7=BC=96=E7=A8=8B(?=
=?UTF-8?q?01)=EF=BC=9A=E7=BA=BF=E7=A8=8B=E7=9A=84=E5=88=9B=E5=BB=BA?=
=?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=8C=E7=8A=B6=E6=80=81=E5=91=A8=E6=9C=9F?=
=?UTF-8?q?=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 4 ++
.../model-multy-thread/pom.xml | 34 +++++++++++++
.../java/com/multy/thread/HelloThread.java | 24 +++++++++
.../thread/block01create/CreateThread01.java | 21 ++++++++
.../thread/block01create/CreateThread02.java | 16 ++++++
.../thread/block01create/CreateThread03.java | 27 ++++++++++
.../thread/block01create/CreateThread04.java | 31 ++++++++++++
.../thread/block01create/CreateThread05.java | 19 +++++++
.../thread/block01create/CreateThread06.java | 21 ++++++++
.../thread/block01create/StateCycle01.java | 49 +++++++++++++++++++
10 files changed, 246 insertions(+)
create mode 100644 java-se-base-parent/model-multy-thread/pom.xml
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/HelloThread.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread01.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread02.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread03.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread04.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread05.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread06.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/StateCycle01.java
diff --git a/README.md b/README.md
index 365f750..cfe67a3 100644
--- a/README.md
+++ b/README.md
@@ -5,6 +5,10 @@
[Java基础篇(01):基本数据类型,核心点整理](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484444&idx=2&sn=c5590ea2d71a0a358d2f9cd96c3c2b19&chksm=fdf450a4ca83d9b2383032c1aa354a59a0ca6d52981f2a58d6d3142bde7ed1605b4fcde3b4d9&token=1530600379&lang=zh_CN#rd)
[Java基础篇(02):特殊的String类,和相关扩展API](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484444&idx=1&sn=2cd50529d3d6ff97a9efce6158891c7c&chksm=fdf450a4ca83d9b29f3edf3c4999885278f7e9130a71b1d2f7f54057dcb07a3b95964547e862&token=1530600379&lang=zh_CN#rd)
+### JavaSE并发篇
+
+[Java并发编程(01):线程的创建方式,状态周期管理](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484431&idx=1&sn=9bdac46fa8309a7618542471c8256b8f&chksm=fdf450b7ca83d9a17a3615c5380a163b93b68a7f2c506e533eec4921b87e8386c65dd629a159&token=1530600379&lang=zh_CN#rd)
+
### JavaEE基础
[JavaEE基础(01):Servlet实现方式,生命周期执行过程](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484304&idx=1&sn=dd6b6852e35031dd07f70d441f3ddc85&chksm=fdf45728ca83de3e158597030cf46b1677eccf533f9e1412690cd64b0ec0cce544711ceabddb&token=1248678182&lang=zh_CN#rd)
diff --git a/java-se-base-parent/model-multy-thread/pom.xml b/java-se-base-parent/model-multy-thread/pom.xml
new file mode 100644
index 0000000..efa2379
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/pom.xml
@@ -0,0 +1,34 @@
+
+
+
+ java-se-base-parent
+ com.java.se.parent
+ 1.0-SNAPSHOT
+
+ 4.0.0
+ com.multy.thread
+ model-multy-thread
+
+
+ ${project.artifactId}
+
+
+ src/main/resources
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.3.2
+
+ 1.8
+ 1.8
+
+
+
+
+
\ No newline at end of file
diff --git a/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/HelloThread.java b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/HelloThread.java
new file mode 100644
index 0000000..e59982d
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/HelloThread.java
@@ -0,0 +1,24 @@
+package com.multy.thread;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadInfo;
+import java.lang.management.ThreadMXBean;
+
+/**
+ * 多线程入门案例
+ */
+public class HelloThread {
+ public static void main(String[] args) {
+ System.out.println("Hello,Thread");
+ // 当前线程名称
+ System.out.println(Thread.currentThread().getName());
+ // 线程系统的管理接口
+ ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
+ long[] threadIds = threadMXBean.getAllThreadIds() ;
+ for (long id : threadIds) {
+ ThreadInfo threadInfo = threadMXBean.getThreadInfo(id) ;
+ System.out.println(threadInfo.getThreadId()+
+ ":"+threadInfo.getThreadName());
+ }
+ }
+}
diff --git a/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread01.java b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread01.java
new file mode 100644
index 0000000..b88142b
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread01.java
@@ -0,0 +1,21 @@
+package com.multy.thread.block01create;
+/**
+ * 线程创建方式一:继承Thread类
+ */
+public class CreateThread01 {
+ public static void main(String[] args) {
+ // 调用方法
+ MyThread1 myThread1 = new MyThread1() ;
+ myThread1.start();
+ }
+}
+class MyThread1 extends Thread {
+ // 设置线程名称
+ public MyThread1 (){
+ super("CicadaThread");
+ }
+ @Override
+ public void run() {
+ System.out.println(Thread.currentThread().getName());
+ }
+}
\ No newline at end of file
diff --git a/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread02.java b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread02.java
new file mode 100644
index 0000000..71451a7
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread02.java
@@ -0,0 +1,16 @@
+package com.multy.thread.block01create;
+/**
+ * 线程创建方式二:实现 Runnable 接口
+ */
+public class CreateThread02 {
+ public static void main(String[] args) {
+ Thread thread = new Thread(new MyThread2(),"MyThread2") ;
+ thread.start();
+ }
+}
+class MyThread2 implements Runnable {
+ @Override
+ public void run() {
+ System.out.println(Thread.currentThread().getName()+" run ...");
+ }
+}
\ No newline at end of file
diff --git a/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread03.java b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread03.java
new file mode 100644
index 0000000..f173908
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread03.java
@@ -0,0 +1,27 @@
+package com.multy.thread.block01create;
+/**
+ * 线程创建方式三:匿名内部类
+ */
+public class CreateThread03 {
+ public static void main(String[] args) {
+ //方式1
+ new Thread("ThreadName1") {
+ public void run() {
+ System.out.println("1:"+Thread.currentThread().getName());
+ };
+ }.start();
+
+ //方式2
+ new Thread(new Runnable() {
+ public void run() {
+ System.out.println("2:"+Thread.currentThread().getName());
+ }
+ },"ThreadName2"){
+ // 这里重写了run方法
+ @Override
+ public void run() {
+ System.out.println("3:"+Thread.currentThread().getName());
+ }
+ }.start();
+ }
+}
diff --git a/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread04.java b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread04.java
new file mode 100644
index 0000000..536abdd
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread04.java
@@ -0,0 +1,31 @@
+package com.multy.thread.block01create;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 线程创建方式四:返回值线程
+ */
+public class CreateThread04 {
+ public static void main(String[] args) throws Exception {
+ MyThread4 myThread4 = new MyThread4();
+ FutureTask task = new FutureTask<>(myThread4);
+ Thread thread = new Thread(task,"TaskThread");
+ thread.start();
+ // 等待获取结果
+ // Integer result = task.get();
+ // 设置获取结果的等待时间,超时抛出:TimeoutException
+ Integer result = task.get(3, TimeUnit.SECONDS) ;
+ System.out.println("result="+result);
+ }
+}
+class MyThread4 implements Callable {
+ // 封装线程执行的任务
+ @Override
+ public Integer call() throws Exception {
+ System.out.println(Thread.currentThread().getName());
+ Thread.sleep(1000);
+ return 2+3;
+ }
+}
\ No newline at end of file
diff --git a/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread05.java b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread05.java
new file mode 100644
index 0000000..aa4ecfe
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread05.java
@@ -0,0 +1,19 @@
+package com.multy.thread.block01create;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * 线程创建方式五:定时任务
+ */
+public class CreateThread05 {
+ public static void main(String[] args) {
+ Timer timer = new Timer();
+ timer.schedule(new TimerTask() {
+ @Override
+ public void run() {
+ System.out.println("延迟1s,每隔3s执行一次");
+ }
+ }, 1000, 3000);
+ }
+}
diff --git a/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread06.java b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread06.java
new file mode 100644
index 0000000..7625da0
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/CreateThread06.java
@@ -0,0 +1,21 @@
+package com.multy.thread.block01create;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+
+/**
+ * 线程创建方式六:线程池
+ */
+public class CreateThread06 {
+ public static void main(String[] args) {
+ Executor threadPool = Executors.newFixedThreadPool(5);
+ for(int i = 0 ;i < 5 ; i++) {
+ threadPool.execute(new Runnable() {
+ @Override
+ public void run() {
+ System.out.println(Thread.currentThread().getName());
+ }
+ });
+ }
+ }
+}
diff --git a/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/StateCycle01.java b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/StateCycle01.java
new file mode 100644
index 0000000..811ae11
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block01create/StateCycle01.java
@@ -0,0 +1,49 @@
+package com.multy.thread.block01create;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 线程状态和周期
+ */
+public class StateCycle01 {
+ public static void main(String[] args) throws Exception {
+ // 进入初始状态
+ StateThread01 stateThread01 = new StateThread01();
+ FutureTask task = new FutureTask<>(stateThread01);
+ Thread thread = new Thread(task,"GetValueThread");
+ // 运行状态
+ thread.start();
+ // 超时等待结果
+ String result = task.get(3, TimeUnit.SECONDS) ;
+ System.out.println("result="+result);
+
+ StateThread02 stateThread02 = new StateThread02() ;
+ Thread thread1 = new Thread(stateThread02,"WaitThread");
+ thread1.start();
+ }
+}
+class StateThread01 implements Callable {
+ @Override
+ public String call() throws Exception {
+ // 超时等待
+ Thread.sleep(1000);
+ return "Hello,Cicada";
+ }
+}
+class StateThread02 implements Runnable {
+ @Override
+ public void run() {
+ synchronized (StateCycle01.class) {
+ System.out.println("进入线程...");
+ try {
+ // 等待状态,放弃对象锁
+ StateCycle01.class.wait(2000);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.out.println("线程继续...");
+ }
+ }
+}
\ No newline at end of file
From 9d23ce37fc73308ba36b273235a2f099aed2a173 Mon Sep 17 00:00:00 2001
From: cicadasmile <1327880701@qq.com>
Date: Sat, 4 Apr 2020 12:43:47 +0800
Subject: [PATCH 04/29] =?UTF-8?q?Java=E5=B9=B6=E5=8F=91=EF=BC=9A=E7=BA=BF?=
=?UTF-8?q?=E7=A8=8B=E6=A0=B8=E5=BF=83=E6=9C=BA=E5=88=B6=EF=BC=8C=E5=9F=BA?=
=?UTF-8?q?=E7=A1=80=E6=A6=82=E5=BF=B5=E6=89=A9=E5=B1=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../thread/block02extend/ExtendThread01.java | 50 +++++++++++++++++++
.../thread/block02extend/ExtendThread02.java | 31 ++++++++++++
.../thread/block02extend/ExtendThread03.java | 30 +++++++++++
.../thread/block02extend/ExtendThread04.java | 36 +++++++++++++
.../thread/block02extend/ExtendThread05.java | 18 +++++++
.../thread/block02extend/ExtendThread06.java | 35 +++++++++++++
.../thread/block02extend/ExtendThread07.java | 30 +++++++++++
7 files changed, 230 insertions(+)
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread01.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread02.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread03.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread04.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread05.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread06.java
create mode 100644 java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread07.java
diff --git a/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread01.java b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread01.java
new file mode 100644
index 0000000..5bb0fd4
--- /dev/null
+++ b/java-se-base-parent/model-multy-thread/src/main/java/com/multy/thread/block02extend/ExtendThread01.java
@@ -0,0 +1,50 @@
+package com.multy.thread.block02extend;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ExtendThread01 {
+ public static void main(String[] args) {
+ List