A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

自己看了银行调度视频后(张孝祥老师的),我觉得,张老师在创建普通窗口时用线程池并且用的是只有一个线程服务的线程池(---Executors.newSingleThreadExecutor().execute------),for循环4次,
创建4个线程池(每个池中只存在一个线程)这样效率是很低的啊,我是想将这4个普通窗口的线程都放在同一个普通窗口的线程池内,一个池内有4个可服务的线程,
这样不是很好嘛,为什磨,张老师这么干?不知道你怎么看。。。
上一张我debug的图片,大家看看是不是效率很低啊。。。。
这是我debug老师程序的图片:

还有,我自己写了个,线程池我没有改,还是用的老师的那种四个普通线程池,每个池里活跃一个服务线程。不过我将三类窗口做了一个抽象。将每个类(暂且使用四个线程池)的run里面外调一个成员方法,但是在线程debug时,
他正常启动了,可是他神奇般的没有执行外调函数的方法,而是在等待,将定时器搞完,他才启动。是不是run里如果调用外面的方法,就会出现“延迟”。。。。
说着费劲,我给代码和图片:
我的blog地址的17篇:http://blog.csdn.net/bostonivy1988/article/details/7555557
我debug自己程序的图片:



老师的是:(来个对比,清晰点)

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

6 个回复

正序浏览
袁冬梅 黑马帝 2012-5-11 22:13:09
7#
黄坚声 发表于 2012-5-11 19:44
因为你在方法里面给时间参数了,那个线程就根据时间延迟了。还不清楚的,请电话咨询张老师! ...

这货太缺德了,电话给张老师,怎么打?
回复 使用道具 举报
黄坚声 发表于 2012-5-11 19:44
因为你在方法里面给时间参数了,那个线程就根据时间延迟了。还不清楚的,请电话咨询张老师! ...

我没有传递时间参数啊,传递的是循环变量 i ,其他的没了啊。在哪里,帮我指出来,谢谢啦。。。
回复 使用道具 举报
因为你在方法里面给时间参数了,那个线程就根据时间延迟了。还不清楚的,请电话咨询张老师!
回复 使用道具 举报
求人指明,奈何我的线程延迟执行(run中外调的代码奈何延迟执行)。
回复 使用道具 举报
之前我说张老师的线程池设计多余了,我自己做了一下,在MainClass中的main方法里,使用固定线程数的线程池装4个活跃线程,
为了避免在在局部内部类中访问局部变量(局部变量只能被final修饰,那我就得不到i了,更不会标示每一个线程的情况),这里我将这些逻辑放在了,
MainClas类的成员位置上,作为了成员方法,个人感觉有点浪费内存。不过可以随时变窗口的个数。使用Main.this.i来访问局部 i 变量。

上图,看看,不过我的线程还是延迟执行,不知是为什么。


我的关键代码部分,两张图:



回复 使用道具 举报
N九不发贴,发一次不容易,兄弟们,顶起!给我看看毛病。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马