线程池概述
程序启动一个新线程成本是比校高的,因カ它渉及到要与操作系統迸行交互而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程吋,更应该考虑线程池.线程池里的毎一个线程代码结束后,井不会死亡,而是再次回到线程池中成为空闲状态,等待下一个対象来使用。在JDK5之前,我仞必須手劫实现自己的线程池,从JDK5幵始, Java内置支持线程池。
package com.tao.thread2;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 多线程(线程池的概述和使用)
* @author 天外飞星
*
*/
public class Demo5_Executors {
public static void main(String[] args) {
ExecutorService eService=Executors.newFixedThreadPool(2); //创建线程池
eService.submit(new MyRunable()); //讲线程放进池子并执行
eService.submit(new MyRunable());
eService.shutdown(); //关闭线程池
}
}
简单工厂模式概述
又叫静态工厂方法模式,它定义-个具体的工厂类负责创建一些类的实例
B:优点
“客户端不需要在负责对象的创建,从而明确了各个类的职责
C:缺点
这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后斯的维护
需要五个类,Animal.java抽象动物类,Dog.java狗类,Cat.java猫类,AniamlFactory.java用于创建动物,Test.java测试类
代码走起
Animal.java
package com.tao.simplefactory;
public abstract class Animal {
public abstract void eat();
}
Dog.java
package com.tao.simplefactory;
public class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃肉");
}
}
Cat.java
package com.tao.simplefactory;
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
AniamlFactory.java
package com.tao.simplefactory;
public class AniamlFactory {
/*public static Dog createDog(){
return new Dog();
}
public static Cat createCat(){
return new Cat();
}*/
public static Animal createAnimal(String name){
if("dog".equals(name)){
return new Dog();
}else if ("cat".equals(name)) {
return new Cat();
}else {
return null;
}
}
}
Test.java
package com.tao.simplefactory;
public class Test {
public static void main(String[] args) {
/*Dog d = AniamlFactory.createDog();
d.eat();
Cat c = AniamlFactory.createCat();
c.eat();*/
Dog d=(Dog) AniamlFactory.createAnimal("dog");
d.eat();
Cat c=(Cat) AniamlFactory.createAnimal("cat");
c.eat();
}
}
设计模式(工厂方法模式的概述和使用)(了解)
- A:工厂方法模式概述
- 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。
- B:优点
- 客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
- C:缺点
- 需要额外的编写代码,增加了工作量
- D:案例演示
Animal.java
package com.tao.FactoryMethod;
public abstract class Animal {
public abstract void eat();
}
Cat.java
package com.tao.FactoryMethod;
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
Dog.java
package com.tao.FactoryMethod;
public class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃肉");
}
}
CatFactory.java
package com.tao.FactoryMethod;
public class CatFactory implements Factory {
@Override
public Animal createAnimal() {
return new Cat();
}
}
DogFactory.java
package com.tao.FactoryMethod;
public class DogFactory implements Factory {
@Override
public Animal createAnimal() {
return new Dog();
}
}
Test.java
package com.tao.FactoryMethod;
import com.tao.simplefactory.AniamlFactory;
public class Test {
public static void main(String[] args) {
DogFactory df=new DogFactory();
Dog d = (Dog) df.createAnimal();
d.eat();
}
}