黑马程序员技术交流社区
标题:
面试问题总结----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