黑马程序员技术交流社区
标题:
关于对象池技术,那在什么情况下使用对象池 有什么优点?
[打印本页]
作者:
转达小朋友
时间:
2013-6-8 23:35
标题:
关于对象池技术,那在什么情况下使用对象池 有什么优点?
本帖最后由 转达小朋友 于 2013-6-9 20:48 编辑
学习iis底程时了解到了 对象池技术 不是很明白 求大师点化。。
作者:
274997322
时间:
2013-6-8 23:43
对象池的工作原理的核心有两点:使用和缓存,即对于那些被频繁使用的对象,在使用完后,不立即将它们释放,而是将它们缓存起来,以供后续的应用程序重复使用。对象池的优点就是减少创建对象和释放对象的次数,进而改善应用程序的性能。
你觉得那些对象需要频繁的创建和释放,就可以使用对象池。
作者:
转达小朋友
时间:
2013-6-9 13:42
听起来 是个不错的东西。你又在实例中用过吗。求实例
作者:
无__畏
时间:
2013-6-9 14:03
对象池避免多个线程访问到同一个对象,避免一个进程内出现了多个对象。
例如: private void btnRandomStart_Click(object sender, RoutedEventArgs e)
{
Thread thread = ThreadSessionFactory.GetCurrentThreadSession(StartRandom); //从对象池获取对象,确定对象在线程内唯一
---------------------------------------------
这里如果改为Thread thread = new Thread(StartRandom);
你分析一下,我点一下这个按钮,让他开始执行,他就创建了一个对象,然后thread.Start()。
再点一下,我就让他停止执行, 那么他又创建了一个对象,这个新对象没有初始化也没有状态,那么它就又执行了thread.Start()
是不是这个线程就又创建了一个线程... 它每次都是创建一个新的对象,所以不能把当前线程的thread给停止掉
如果使用了对象池,那么我再次点击的时候,它拿到的是上次点击时候创建的对象,然后继续对那个对象进行操作
-----------------------------------------------
if (isStart == false)
{
isStart = true;
if (thread.ThreadState == ThreadState.Suspended) //判断thread的状态
{
thread.Resume(); //继续已挂起的线程
}
else
{
lock (thread)
{
thread.Start(); //启动这个线程
}
}
//thread.Start();
this.btnRandomStart.Content = "停止";
}
else
{
isStart = false;
//thread.Abort();
lock (thread)
{
thread.Suspend(); //挂起线程
}
this.btnRandomStart.Content = "开始随机点名";
}
作者:
popoluno
时间:
2013-6-9 15:40
来学习的
作者:
转达小朋友
时间:
2013-6-9 20:47
无__畏 发表于 2013-6-9 14:03
对象池避免多个线程访问到同一个对象,避免一个进程内出现了多个对象。
例如: private void btnRan ...
提高效率 节省资源,谢谢无谓的回答
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2