From 6e43f898c06cde414e417059dc8400373f8f9542 Mon Sep 17 00:00:00 2001 From: fanxb Date: Tue, 9 Apr 2019 11:18:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=A4=9A=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- 2.javaThreadDemo/READEME.md | 2 ++ 2.javaThreadDemo/src/Main.java | 8 +++++ .../src/base/CustomExceptionHandler.java | 24 ++++++++++++++ .../src/base/CustomThreadExtendThread.java | 25 +++++++++++++++ .../base/CustomThreadImplementInterface.java | 31 +++++++++++++++++++ 6 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 2.javaThreadDemo/READEME.md create mode 100644 2.javaThreadDemo/src/Main.java create mode 100644 2.javaThreadDemo/src/base/CustomExceptionHandler.java create mode 100644 2.javaThreadDemo/src/base/CustomThreadExtendThread.java create mode 100644 2.javaThreadDemo/src/base/CustomThreadImplementInterface.java diff --git a/.gitignore b/.gitignore index 67271a8..a0dcd6a 100644 --- a/.gitignore +++ b/.gitignore @@ -49,4 +49,5 @@ hs_err_pid* target .mvn mvnw -mvnw.cmd \ No newline at end of file +mvnw.cmd +out \ No newline at end of file diff --git a/2.javaThreadDemo/READEME.md b/2.javaThreadDemo/READEME.md new file mode 100644 index 0000000..cfd632e --- /dev/null +++ b/2.javaThreadDemo/READEME.md @@ -0,0 +1,2 @@ +本文件用于说明包用途: +- base: 创建线程的两种方式 \ No newline at end of file diff --git a/2.javaThreadDemo/src/Main.java b/2.javaThreadDemo/src/Main.java new file mode 100644 index 0000000..dba6a0e --- /dev/null +++ b/2.javaThreadDemo/src/Main.java @@ -0,0 +1,8 @@ +public class Main { + + public static void main(String[] args) { + System.out.println("Hello World!"); + System.out.println("当前线程名为:"+Thread.currentThread().getName()); + System.out.println("当前线程id为:"+Thread.currentThread().getId()); + } +} diff --git a/2.javaThreadDemo/src/base/CustomExceptionHandler.java b/2.javaThreadDemo/src/base/CustomExceptionHandler.java new file mode 100644 index 0000000..40488b9 --- /dev/null +++ b/2.javaThreadDemo/src/base/CustomExceptionHandler.java @@ -0,0 +1,24 @@ +package base; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/4/9 10:54 + */ +public class CustomExceptionHandler implements Thread.UncaughtExceptionHandler { + + @Override + public void uncaughtException(Thread t, Throwable e) { + System.out.println("捕获到线程"+t.getName()+",异常:" + e.getMessage()); + e.printStackTrace(); + } + + public static void main(String[] args) { + Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler()); + new Thread(() -> { + throw new RuntimeException("test"); + }).start(); + } +} diff --git a/2.javaThreadDemo/src/base/CustomThreadExtendThread.java b/2.javaThreadDemo/src/base/CustomThreadExtendThread.java new file mode 100644 index 0000000..326d33c --- /dev/null +++ b/2.javaThreadDemo/src/base/CustomThreadExtendThread.java @@ -0,0 +1,25 @@ +package base; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/4/8 11:04 + */ +public class CustomThreadExtendThread extends Thread{ + + @Override + public void run() { + String threadName = Thread.currentThread().getName(); + long threadId = Thread.currentThread().getId(); + System.out.println("创建线程名为:"+threadName+",id为:"+threadId); + } + + public static void main(String[] args){ + Thread thread1 = new CustomThreadExtendThread(); + Thread thread2 = new CustomThreadExtendThread(); + thread1.start(); + thread2.start(); + } +} diff --git a/2.javaThreadDemo/src/base/CustomThreadImplementInterface.java b/2.javaThreadDemo/src/base/CustomThreadImplementInterface.java new file mode 100644 index 0000000..e5cad7d --- /dev/null +++ b/2.javaThreadDemo/src/base/CustomThreadImplementInterface.java @@ -0,0 +1,31 @@ +package base; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/4/8 11:11 + */ +public class CustomThreadImplementInterface implements Runnable { + + @Override + public void run() { + Thread.currentThread().setName(((Double) Math.random()).toString()); + String threadName = Thread.currentThread().getName(); + long threadId = Thread.currentThread().getId(); + System.out.println("创建线程名为:" + threadName + ",id为:" + threadId); + } + + public static void main(String[] args) { + Thread thread1 = new Thread(new CustomThreadImplementInterface()); + Thread thread2 = new Thread(new CustomThreadExtendThread()); + thread1.start(); + thread2.start(); + + //使用lambda表达式,让创建线程更简单 + new Thread(() -> { + System.out.println("创建了一个新线程"); + }).start(); + } +}