摘要:
/*stop方法已经过时。如何停止线程?只有一种,run方法结束。开启多线程运行,运行代码通常是循环结构。只要控制住循环,就可以让run方法结束,也就是线程结束。特殊情况:当线程处于了冻结状态。就不会读取到标记。那么线程就不会结束。当没有指定的方式让冻结的线程恢复到运行状态是,这时需要对冻结进行清除。强制让线程恢复到运行状态中来。这样就可以操作标记让线程结束。Thread类提供该方法 interrupt();*/class StopThread implements Runnable{ private boolean flag =true; public void run() ... 阅读全文
摘要:
异常:是什么?是对问题的描述。将问题进行对象的封装。------------异常体系: Throwable |--Error |--Exception |--RuntimeException异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性。 也就是说可以被throw和throws关键字所操作。 只有异常体系具备这个特点。--------------throw和throws的用法:throw定义在函数内,用于抛出异常对象。throws定义在函数上,用于抛出异常类,可以抛... 阅读全文
摘要:
package pack;/*为了简化类名的书写,使用一个关键字,import.import 导入的是包中的类。建议,不要写通配符 * ,需要用到包中的哪个类,就导入哪个类。c:\myclassc:\myclass\packb\DemoA.classc:\myclass\packb\haha\D... 阅读全文
摘要:
/*单例设计模式。*///饿汉式。/*class Single{ private static final Single s = new Single(); private Single(){} public static Single getInstance() { return s; }}*///懒汉式class Single{ private static Single s = null; private Single(){} public static Single getInstance() { if... 阅读全文
摘要:
/*需求:银行有一个金库。有两个储户分别存300员,每次存100,存3次。目的:该程序是否有安全问题,如果有,如何解决?如何找问题:1,明确哪些代码是多线程运行代码。2,明确共享数据。3,明确多线程运行代码中哪些语句是操作共享数据的。*/class Bank{ private int sum; //Object obj = new Object(); public synchronized void add(int n) { //synchronized(obj) //{ sum = sum + n; ... 阅读全文
摘要:
/*死锁。同步中嵌套同步。*/class Ticket implements Runnable{ private int tick = 1000; Object obj = new Object(); boolean flag = true; public void run() { if(flag) { while(true) { synchronized(obj) { show(); ... 阅读全文
摘要:
/*线程间通讯:其实就是多个线程在操作同一个资源,但是操作的动作不同。*/class Res{ String name; String sex; boolean flag = false;}class Input implements Runnable{ private Res r ; Input(Res r) { this.r = r; } public void run() { int x = 0; while(true) { synchronized(r) ... 阅读全文
摘要:
/*线程间通讯:其实就是多个线程在操作同一个资源,但是操作的动作不同。*/class Res{ private String name; private String sex; private boolean flag = false; public synchronized void set(String name,String sex) { if(flag) try{this.wait();}catch(Exception e){} this.name = name; this.s... 阅读全文
摘要:
/*多态:可以理解为事物存在的多种体现形态。人:男人,女人动物:猫,狗。猫 x = new 猫();动物 x = new 猫();1,多态的体现 父类的引用指向了自己的子类对象。 父类的引用也可以接收自己的子类对象。2,多态的前提 必须是类与类之间有关系。要么继承,要么实现。 通常还有一个前提:存在覆盖。3,多态的好处 多态的出现大大的提高程序的扩展性。4,多态的弊端: 虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员。5,多态的应用6,多态的出现代码中的特点(多态使用的注意事项)第二个问题:如何使用子类特有方法。*//*动物,猫,狗。*/class... 阅读全文
摘要:
/*Object:是所有对象的直接后者间接父类,传说中的上帝。该类中定义的肯定是所有对象都具备的功能。Object类中已经提供了对对象是否相同的比较方法。如果自定义类中也有比较相同的功能,没有必要重新定义。只要沿袭父类中的功能,建立自己特有比较内容即可。这就是覆盖。*/class Demo //extends Object{ private int num; Demo(int num) { this.num = num; } public boolean equals(Object obj)//Object obj = new Demo();... 阅读全文
摘要:
/*内部类的访问规则:1,内部类可以直接访问外部类中的成员,包括私有。 之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this2,外部类要访问内部类,必须建立内部类对象。访问格式:1,当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。可以直接建立内部类对象。格式 外部类名.内部类名 变量名 = 外部类对象.内部类对象; Outer.Inner in = new Outer().new Inner();2,当内部类在成员位置上,就可以被成员修饰符所修饰。 比如,private:将内部类在外部类中进行封装。 ... 阅读全文
摘要:
/*Exceptoin中有一个特殊的子类异常RuntimeException 运行时异常。如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。如果在函数上声明了该异常。调用者可以不用进行处理。编译一样通过;之所以不用在函数声明,是因为不需要让调用者处理。当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。自定义异常时:如果该异常的发生,无法在继续进行运算,就让自定义异常继承RuntimeException。对于异常分两种:1,编译时被检测的异常。 2,编译时不被检测的异常(运行时异常。RuntimeException以及其子类)*/... 阅读全文
摘要:
/*毕老师用电脑上课。开始思考上课中出现的问题。比如问题是 电脑蓝屏。 电脑冒烟。要对问题进行描述,封装成对象。可是当冒烟发生后,出现讲课进度无法继续。出现了讲师的问题:课时计划无法完成。*/class LanPingException extends Exception{ LanPingException(String message) { super(message); }}class MaoYanException extends Exception{ MaoYanException(String message) { ... 阅读全文