diff --git a/JavaCore/src/com/ddb/javacore/reflect/ClassDemo.java b/JavaCore/src/com/ddb/javacore/reflect/ClassDemo.java index f1c98a1..030d4fa 100644 --- a/JavaCore/src/com/ddb/javacore/reflect/ClassDemo.java +++ b/JavaCore/src/com/ddb/javacore/reflect/ClassDemo.java @@ -1,76 +1,76 @@ -package com.ddb.javacore.reflect; - -import java.io.PrintStream; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -public class ClassDemo { - - public static void main(String[] args) - throws ClassNotFoundException, NoSuchFieldException, SecurityException, InstantiationException, - IllegalAccessException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException { - PrintStream out = System.out; - // 第一种得到Class 实例的方式 - Class class1 = Class.forName("com.ddb.javacore.reflect.Person"); - // 第二种得到Class 实例的方式 - Class class2 = Person.class; - // 第三种得到Class 实例的方式 - Class class3 = new Person().getClass(); - - out.println(class1); - out.println(class2); - out.println(class3); - - out.println(class1.getName()); - out.println(class2.getName()); - out.println(class3.getName()); - - out.println("class1.getComponentType() : " + class1.getComponentType()); - out.println("class1.getModifiers() :" + class1.getModifiers()); - out.println("class1.getSimpleName() :" + class1.getSimpleName()); - out.println("class1.getTypeName() :" + class1.getTypeName()); - out.println("class1.getClassLoader() : " + class1.getClassLoader()); - out.println("class1.getDeclaredMethods() :"); - out.println("该类拥有的方法:"); - Method[] methods = class1.getDeclaredMethods(); - for (Method method : methods) { - out.println("method : " + method); - } - - Field[] fields = class1.getDeclaredFields(); - out.println("该类拥有的字段:"); - for (Field field : fields) { - out.println("field : " + field); - } - - // 利用反射创建Person类的实例 - Person obj = (Person) class1.newInstance(); - - // 访问指定的字段 - out.println("访问指定的字段 :age"); - Field fname = class1.getDeclaredField("name"); - Field fage = class1.getDeclaredField("age"); - - fname.setAccessible(true); - out.println("fname.get(obj) :" + fname.get(obj)); - fage.setAccessible(true); - out.println("fage.get(obj) :" + fage.get(obj)); - - out.println("通过反射设定属性:"); - fname.set(obj, "zhangsan01"); - fage.set(obj, 32); - out.println("fname.get(obj) :" + fname.get(obj)); - fage.setAccessible(true); - out.println("fage.get(obj) :" + fage.get(obj)); - out.println("obj.toString() :" + obj.toString()); - - out.println("通过反射唤醒或执行被反射对象的方法:"); - Method method = class1.getMethod("printPersonSelf"); - - out.println("唤醒printPersonSelf:"); - method.invoke(obj); - - } - -} +package com.ddb.javacore.reflect; + +import java.io.PrintStream; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +public class ClassDemo { + + public static void main(String[] args) + throws ClassNotFoundException, NoSuchFieldException, SecurityException, InstantiationException, + IllegalAccessException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException { + PrintStream out = System.out; + // 第一种得到Class 实例的方式 + Class class1 = Class.forName("com.ddb.javacore.reflect.Person"); + // 第二种得到Class 实例的方式 + Class class2 = Person.class; + // 第三种得到Class 实例的方式 + Class class3 = new Person().getClass(); + + out.println(class1); + out.println(class2); + out.println(class3); + + out.println(class1.getName()); + out.println(class2.getName()); + out.println(class3.getName()); + + out.println("class1.getComponentType() : " + class1.getComponentType()); + out.println("class1.getModifiers() :" + class1.getModifiers()); + out.println("class1.getSimpleName() :" + class1.getSimpleName()); + out.println("class1.getTypeName() :" + class1.getTypeName()); + out.println("class1.getClassLoader() : " + class1.getClassLoader()); + out.println("class1.getDeclaredMethods() :"); + out.println("该类拥有的方法:"); + Method[] methods = class1.getDeclaredMethods(); + for (Method method : methods) { + out.println("method : " + method); + } + + Field[] fields = class1.getDeclaredFields(); + out.println("该类拥有的字段:"); + for (Field field : fields) { + out.println("field : " + field); + } + + // 利用反射创建Person类的实例 + Person obj = (Person) class1.newInstance(); + + // 访问指定的字段 + out.println("访问指定的字段 :age"); + Field fname = class1.getDeclaredField("name"); + Field fage = class1.getDeclaredField("age"); + + fname.setAccessible(true); + out.println("fname.get(obj) :" + fname.get(obj)); + fage.setAccessible(true); + out.println("fage.get(obj) :" + fage.get(obj)); + + out.println("通过反射设定属性:"); + fname.set(obj, "zhangsan01"); + fage.set(obj, 32); + out.println("fname.get(obj) :" + fname.get(obj)); + fage.setAccessible(true); + out.println("fage.get(obj) :" + fage.get(obj)); + out.println("obj.toString() :" + obj.toString()); + + out.println("通过反射唤醒或执行被反射对象的方法:"); + Method method = class1.getMethod("printPersonSelf"); + + out.println("唤醒printPersonSelf:"); + method.invoke(obj); + + } + +} diff --git a/JavaCore/src/com/ddb/javacore/reflect/ConstructorDemo.java b/JavaCore/src/com/ddb/javacore/reflect/ConstructorDemo.java index 37346ce..fa17065 100644 --- a/JavaCore/src/com/ddb/javacore/reflect/ConstructorDemo.java +++ b/JavaCore/src/com/ddb/javacore/reflect/ConstructorDemo.java @@ -1,32 +1,32 @@ -package com.ddb.javacore.reflect; - -import java.lang.reflect.Constructor; - -public class ConstructorDemo { - public static void main(String[] args) { - Class demo = null; - try { - demo = Class.forName("com.ddb.javacore.reflect.Person"); - } catch (Exception e) { - e.printStackTrace(); - } - Person per1 = null; - Person per2 = null; - Person per3 = null; - Person per4 = null; - // 取得全部的构造函数 - Constructor cons[] = demo.getConstructors(); - try { - per1 = (Person) cons[3].newInstance(); - per2 = (Person) cons[2].newInstance("Rollen"); - per3 = (Person) cons[1].newInstance(20); - per4 = (Person) cons[0].newInstance("Rollen", 20); - } catch (Exception e) { - e.printStackTrace(); - } - System.out.println(per1); - System.out.println(per2); - System.out.println(per3); - System.out.println(per4); - } -} +package com.ddb.javacore.reflect; + +import java.lang.reflect.Constructor; + +public class ConstructorDemo { + public static void main(String[] args) { + Class demo = null; + try { + demo = Class.forName("com.ddb.javacore.reflect.Person"); + } catch (Exception e) { + e.printStackTrace(); + } + Person per1 = null; + Person per2 = null; + Person per3 = null; + Person per4 = null; + // 取得全部的构造函数 + Constructor cons[] = demo.getConstructors(); + try { + per1 = (Person) cons[3].newInstance(); + per2 = (Person) cons[2].newInstance("Rollen"); + per3 = (Person) cons[1].newInstance(20); + per4 = (Person) cons[0].newInstance("Rollen", 20); + } catch (Exception e) { + e.printStackTrace(); + } + System.out.println(per1); + System.out.println(per2); + System.out.println(per3); + System.out.println(per4); + } +} diff --git a/JavaCore/src/com/ddb/javacore/reflect/Person.java b/JavaCore/src/com/ddb/javacore/reflect/Person.java index e1ccaec..5bc336b 100644 --- a/JavaCore/src/com/ddb/javacore/reflect/Person.java +++ b/JavaCore/src/com/ddb/javacore/reflect/Person.java @@ -1,40 +1,40 @@ -package com.ddb.javacore.reflect; - -import lombok.Getter; -import lombok.Setter; - -@Getter@Setter -public class Person { - - private String name; - private int age; - - //构造方法 - public Person() { - - } - - public Person(String name) { - this.name = name; - } - - public Person(int age) { - this.age = age; - } - - public Person(String name, int age) { - this.age = age; - this.name = name; - } - //构造方法结束 - - @Override - public String toString() { - return "[" + this.name + " " + this.age + "]"; - } - - public void printPersonSelf() { - System.out.println(this.toString()); - } - -} +package com.ddb.javacore.reflect; + +import lombok.Getter; +import lombok.Setter; + +@Getter@Setter +public class Person { + + private String name; + private int age; + + //构造方法 + public Person() { + + } + + public Person(String name) { + this.name = name; + } + + public Person(int age) { + this.age = age; + } + + public Person(String name, int age) { + this.age = age; + this.name = name; + } + //构造方法结束 + + @Override + public String toString() { + return "[" + this.name + " " + this.age + "]"; + } + + public void printPersonSelf() { + System.out.println(this.toString()); + } + +} diff --git a/JavaCore/src/com/ddb/javacore/thread/WriteArticleRunable.java b/JavaCore/src/com/ddb/javacore/thread/WriteArticleRunable.java index 2cfeb79..ca5c2a5 100644 --- a/JavaCore/src/com/ddb/javacore/thread/WriteArticleRunable.java +++ b/JavaCore/src/com/ddb/javacore/thread/WriteArticleRunable.java @@ -15,15 +15,26 @@ public WriteArticleRunable(Paper paper, Pen pen) { @Override public void run() { while (isRunning) { + + // synchronized (paper) { + if (!paper.getIsPrivated()) { paper.setIsPrivated(true); paper.setOwner(Thread.currentThread().getName()); } + // } + // synchronized (paper) { + /* + * try { if (Thread.currentThread().getName().equals("zhangsan")) { + * Thread.sleep(1); } } catch (InterruptedException e) { // TODO + * Auto-generated catch block e.printStackTrace(); } + */ // 判断Pen资源是否可以得到 if (!pen.getIsPrivated()) { pen.setIsPrivated(true); pen.setOwner(Thread.currentThread().getName()); } + // } Boolean getPaper = paper.getOwner().equals(Thread.currentThread().getName()); Boolean getPen = pen.getOwner().equals(Thread.currentThread().getName()); @@ -52,6 +63,7 @@ public void run() { e.printStackTrace(); } } + } else if (!getPaper && getPen) { System.out.println(Thread.currentThread().getName() + "得到了钢笔,我缺少纸张!"); diff --git a/WebCore/.classpath b/WebCore/.classpath index c229b99..f6d7f25 100644 --- a/WebCore/.classpath +++ b/WebCore/.classpath @@ -1,12 +1,8 @@ - - - - - - - - - - - - + + + + + + + +