From ae323d73a84f31b991cea5bc2dcbca7d18fddcca Mon Sep 17 00:00:00 2001 From: th270 <448725485@qq.com> Date: Wed, 29 Aug 2018 10:36:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4=E4=BA=BA:?= =?UTF-8?q?=E6=B1=A4=E8=BE=89=20=E5=8A=9F=E8=83=BD=E7=82=B9:=20JAVA=20?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=20master=20=E6=9D=A5=E6=BA=90=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=BC=96=E5=8F=B7/=E7=89=88=E6=9C=AC=E7=AE=80?= =?UTF-8?q?=E7=A7=B0:=20=E9=97=AE=E9=A2=98=E5=88=86=E7=B1=BB:=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=A7=84=E8=8C=83=20=E5=8A=9F=E8=83=BD=E8=AF=B4?= =?UTF-8?q?=E6=98=8E/=E9=97=AE=E9=A2=98=E7=8E=B0=E8=B1=A1:=20=E6=96=B9?= =?UTF-8?q?=E6=A1=88/=E8=A7=A3=E5=86=B3=E5=8A=9E=E6=B3=95:=E6=97=A0=20?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=AE=8C=E6=88=90=E8=87=AA=E6=B5=8B:?= =?UTF-8?q?=E6=98=AF=20=E6=9C=89=E6=97=A0=E5=85=BC=E5=AE=B9=E6=80=A7?= =?UTF-8?q?=E9=97=AE=E9=A2=98:=E6=97=A0=20=E6=9C=89=E6=97=A0=E9=85=8D?= =?UTF-8?q?=E5=90=88=E6=9B=B4=E6=96=B0=E6=A8=A1=E5=9D=97:=E6=97=A0=20?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E7=9B=B8=E5=85=B3=E8=B7=AF=E5=BE=84:?= =?UTF-8?q?=E4=B8=8D=E6=B6=89=E5=8F=8A=20=E5=BB=BA=E8=AE=AE:=E6=97=A0=20?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=AE=A1=E6=A0=B8=E4=BA=BA:=E6=B1=A4?= =?UTF-8?q?=E8=BE=89,=20=E6=96=87=E4=BB=B6=E5=A4=B9=E6=88=96=E8=80=85?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=8F=90=E4=BA=A4=E6=95=B0=E9=87=8F:=20?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E7=9A=84=E6=9D=A5=E6=BA=90:=E6=97=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/th/thread/TestSynchronized02.java | 8 ++++++++ src/com/th/thread/TestSynchronized03.java | 4 ++++ src/com/th/thread/TestTimer.java | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/src/com/th/thread/TestSynchronized02.java b/src/com/th/thread/TestSynchronized02.java index 7769ea7..b4832ee 100644 --- a/src/com/th/thread/TestSynchronized02.java +++ b/src/com/th/thread/TestSynchronized02.java @@ -31,27 +31,35 @@ public void run() { } class Print02{ + // 非静态同步方法的锁对象是this(谁调用锁对象就是谁) + public synchronized void print1() { + System.out.print("一"); System.out.print("二"); System.out.print("三"); System.out.print("四"); System.out.print("五"); System.out.print("\r\n"); + } public void print2() { + // 同步代码块的所对象需要时同一个锁对象,如果不是同一个锁对象,也不是两个同步代码块不属于同一个同步代码块 // 这里的锁对象是this 也就是说 谁调用这个方法,谁就是这个锁对象 // 如果这两个方法不是同一个对象调用的,那么这两个同步代码块不属于同一个同步代码块(锁对象不一样) + synchronized (this){ + System.out.print("1-"); System.out.print("2-"); System.out.print("3-"); System.out.print("4-"); System.out.print("5"); System.out.print("\r\n"); + } } } diff --git a/src/com/th/thread/TestSynchronized03.java b/src/com/th/thread/TestSynchronized03.java index d22241f..894eda7 100644 --- a/src/com/th/thread/TestSynchronized03.java +++ b/src/com/th/thread/TestSynchronized03.java @@ -33,23 +33,27 @@ public void run() { class Print03{ // 静态同步方法的锁对象是该对象的字节码对象 public static synchronized void print1() { + System.out.print("一"); System.out.print("二"); System.out.print("三"); System.out.print("四"); System.out.print("五"); System.out.print("\r\n"); + } public void print2() { // 这个同步代码块要跟上面静态同步方法同步 锁对象就要是该类的字节码对象 synchronized (Print03.class){ + System.out.print("1-"); System.out.print("2-"); System.out.print("3-"); System.out.print("4-"); System.out.print("5"); System.out.print("\r\n"); + } } } diff --git a/src/com/th/thread/TestTimer.java b/src/com/th/thread/TestTimer.java index 57d3114..cc4cd29 100644 --- a/src/com/th/thread/TestTimer.java +++ b/src/com/th/thread/TestTimer.java @@ -30,7 +30,9 @@ public static void main(String[] args) throws InterruptedException { * @param timer */ private static void testScheduleAtFixedRate(Timer timer) { + timer.scheduleAtFixedRate(new MyTask("testScheduleAtFixedRate"),3*1000,1*1000); + } /** @@ -38,12 +40,14 @@ private static void testScheduleAtFixedRate(Timer timer) { * @param timer */ private static void testScheduleDelayPeriod(Timer timer) { + /** * task - 所要安排的任务。 * delay - 执行任务前的延迟时间,单位是毫秒。(首次执行该任务之前延迟的时间) * period - 执行各后续任务之间的时间间隔,单位是毫秒。(以后每次执行该任务的频率) */ timer.schedule(new MyTask("testScheduleDelayPeriod"),3*1000,2*1000); + } @@ -52,10 +56,12 @@ private static void testScheduleDelayPeriod(Timer timer) { * @param timer */ private static void testScheduleDelay(Timer timer) { + /** * delay 时间后开始执行这个任务 */ timer.schedule(new MyTask("testScheduleDelay"),3*1000); + } /** @@ -63,6 +69,7 @@ private static void testScheduleDelay(Timer timer) { * @param timer */ private static void testScheduleFirstTimePeriod(Timer timer) { + /** * task - 所要安排的任务。 * firstTime - 首次执行任务的时间。 @@ -70,6 +77,7 @@ private static void testScheduleFirstTimePeriod(Timer timer) { * 如果该任务执行的时间超过了period时间:上次任务执行完后立马开始执行下一次任务。 */ timer.schedule(new MyTask("testScheduleFirstTimePeriod"),new Date(),3000); + } /** @@ -77,7 +85,9 @@ private static void testScheduleFirstTimePeriod(Timer timer) { * @param timer */ private static void testSchedule(Timer timer) { + timer.schedule(new MyTask("testSchedule"),new Date() ); + }