黑马程序员技术交流社区

标题: 面试问题总结----2----多线程 [打印本页]

作者: 菜鸟的求学路    时间: 2015-5-21 17:33
标题: 面试问题总结----2----多线程
1.JDK5之后的Lock锁:
        Lock lock = .....;//子类对象
        lock.lock();//获取锁
        try{
                //同步的代码
        }finally{
                lock.unlock();//解锁
        }
2.线程组:
        ThreadGroup:
                构造:ThreadGroup(String name);
        将线程添加到某个线程组:
        MyThread t = new MyThread(group,"线程名称");

        作用:可以将多个线程添加到某个组,统一管理;
              可以对组内的所有线程做统一操作;
3.线程池:
        Executors类中的一些静态方法:
                public static ExecutorService newCachedThreadPool()
                public static ExecutorService newFixedThreadPool(int nThreads):例子中使用的;
                public static ExecutorService newSingleThreadExecutor():
        ExecutorService类:
                Future submit():执行一个线程,并接受返回值;
        意义:
                可以实例化一组线程对象,并可以反复使用,不需要再次构造;

4.多线程实现方式3:
        1.实现Callable接口;
        2.重写call()方法;
        3.测试:
                使用线程池的方式启动线程;
5.定时器:
        1.TimerTask(抽象类):定义任务;
                1).继承自TimerTask;
                2).重写run()方法;
        2.使用Timer启动:
                构造方法:Timer();
                成员方法:
                        public void schedule(TimerTask task,long delay):在delay毫秒后开始执行TimerTask
                          public void schedule(TimerTask task,long delay,long period):安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
                        其它重载方法看帮助文档;
6.多线程常见面试题:见demo;
7.设计模式:
        1.简单工厂模式:
                1.提供"具体产品"类;
                2.提供"工厂"类:
                        1).方式一:内部针对每种产品,提供一个单独的getXxx()方法;
                        2).方式二:内部只提供一个方法,需要所有产品有一个父类,此方法声明:
                                        public 产品父类  get产品(String type){
                                                if(type.equals("")){
                                                        return 产品1;
                                                }
                                                if(type.equals("")){
                                                        return 产品2;
                                                }
                                        }
        2.工厂方法模式:
                1).提供"产品"接口
                2).提供"工厂"接口;
                3).每新增一个产品时,定义一个产品类,实现"产品"接口,
                   再定义一个"产品工厂"类,实现"工厂"接口;
8.单例模式:
        1.程序运行期间,全局只有一个某类的对象,此类就可以设计为"单例模式":
        2.要点:
                1).构造方法私有化;
                2).定义本类类型的私有、静态 变量;
                3).提供公有静态方法获取本类的对象;
        3.饿汉式:
                内部成员定义时,就直接实例化;
          懒汉式:
                内部成员定义时,先置为null,在公有方法中,先判断是否是null,然后再赋值,最后返回引用;
作者: !85684009ex    时间: 2015-5-21 23:02
膜拜大声
作者: 行知灬哒    时间: 2015-5-21 23:04
哇哦  看看哦  谢谢~
作者: 18463730277    时间: 2015-5-21 23:15
可以实例化一组线程对象
作者: 星辉祝愿    时间: 2015-5-21 23:25
哦哦,学到了
作者: 王建伟    时间: 2015-5-22 18:12
膜拜。。。。。。。
作者: zdh    时间: 2015-5-22 21:25
看看哦  谢谢~
作者: 郭.威    时间: 2015-5-22 21:26
好厉害,谢谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2