图一是根据教程写的一个用于寻找文件中是否有匹配字符串的方法,图二图三为根据教程自己写的线程池类,练习中要求是用线程池的一个线程去扫描一个文件内容。图一第一行调用的方法为过滤出java文件,返回值为一个装有文件对象的链表。我选用的目标文件夹含有六七十个java文件。图一单步运行的时候未出现任何问题,运行结果符合预期。但是将断点除去重新运行的时候发现线程在执行完前十个任务(线程池打开了十个线程)的时候自动结束了线程,并没有将所有任务执行完。在该方法尾部加上一句Thread.sleep(1)后可以解决该问题,但是不清楚原因。球球大神帮我看一下,谢谢!
也就是说我注释掉的sleep方法不论休眠多少毫秒都可以使主线程等下再结束,才能让其他线程执行,但是一旦注释掉这个sleep方法,主线程就直接结束。我这么理解可以吗?
追答sleep就是为了等待其他线程执行完,如果其他线程执行时间比较长,你这个sleep要等好久才行,就不只是1s能解决的了
关于java多线程的疑问,为何单步没问题的程序去除断点后运行就会有问题...
用测试类跑的吧?测试类的主线程结束之后,容器就直接关掉了,你开的那些线程已经没有运行环境了,所以你让主线程等下在结束,容器保持开启状态,其他线程才能执行完;这个问题在程序正常启动的时候是不存在的。
java+多线程异步堆栈实验中可能出现的问题?
3. 内存泄漏问题:如果程序没有正确地释放内存,就会导致内存泄漏。在异步堆栈实验中,如果不及时清理已经完成的任务,就可能导致内存泄漏。4. 性能问题:多线程异步堆栈实验中,线程数量和任务数量的平衡会影响程序的性能。如果线程数量过多,会导致线程切换的开销增大,从而影响程序的性能。5. 异常处理问...
使用eclipse如何查看程序的断点?
1, 首先在一个java文件中设断点,然后运行,当程序走到断点处就会转到debug视图下,2, F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over,也就是执行本行代码,跳到下一行,3,F7是跳出函数 4,F8是执行到最后。\/\/\/ 1.Step Into (also F5) 跳入 2.Step Over...
...问个很傻的问题 java除了可以写在记事本之外,有没有类似visdul studi...
JBuilder环境开发程序方便,它是纯的Java开发环境,适合企业的J2EE开发;缺点是往往一开始人们难于把握整个程序各部分之间的关系,对机器的硬件要求较高,比较吃内存,这时运行速度显得较慢。5、Oracle的JDeveloperOracle9iJDeveloper(定为9.0版,最新为10g)为构建具有J2EE功能,XML和Webservices的复杂的,多层的Java应用程序提供了...
服务问题的化解技巧是什么?
有时候出问题的地方不好确定,范围又太广,没办法到户打log,可以用二分法来,通过几次迭代迅速缩小范围。有时候打log会严重影响性能,导致功能不能正常运行,可以写个高性能的内存log模块来调试。比如我以前调试网卡驱动,中断触发非常频繁,不可能通过单步调试或者普通的log查问题,于是写了一个微秒级的...
IDEA中Debug调试的高级武功秘籍助你快速追踪BUG
远程调试允许开发者调试运行在远程 JVM 进程中的程序,适用于不同环境或部署模式。多线程下的调试 多线程程序的调试往往具有挑战性,尤其是线程安全问题。在 IntelliJ IDEA 中,通过设置断点和粒度为线程,可以方便地模拟多线程竞争情况,有助于编写或调试多线程程序。总之,IntelliJ IDEA 提供了丰富的高级...
eclipse的debug怎么用
5.resume 重新开始执行debug,一直运行直到遇到breakpoint。例如 :A和B两个断点,debug过程中发现A断点已经无用,去除A断点,运行resume就会跳过A直接到达B断点。6.hit count 设置执行次数 适合程序中的for循环(设置 breakpoint view-右键hit count)7.inspect 检查 运算。执行一个表达式显示执行值 8.watch...
java用框架的坏处是什么?
1.项目中存在一些没有必要的组件或模块,使得代码冗余,项目大小无形中变大了;2.如果对框架熟悉的人可能感觉不到,对于框架不熟悉的开发者,代码的调试遇到框架时无疑是抓狂的(断点调试难度大,不要问我怎么知道的。);3. 程序开发人员基础要求较低,慢慢的产生依赖能力,提升较慢,甚至很多基础知识...
delphi与vc比较
但是预处理机制仍然存在若干问题:1)程序调试的断点行可能和代码行不同;2)没有将最新的代码信息综合进去;3)容易产生错误的逻辑;4)因为读错文件头而很容易产生类似"Unexpected End of File"的错误。 两个编译器有个共同点是都能识别无用的"死"代码,比如一个没有用的函数等等。编译后的程序将不包含这些多余的...
dota 如何高效farm
1, 首先在一个java文件中设断点,然后运行,当程序走到断点处就会转到debug视图下。 2, F5键与F6键均为单步调试。F5是step into,也就是进入本行代码中执行,F6是step over也就是执行本行代码,跳到下一行。 3,F7是跳出函数 4,F8是执行到最后。1.Step Into (also F5) 跳入 2.Step Over (also F6) 跳过。