问题描述
如题,Classa{publica(){A1a1=newA1();threadt1=newthreada(newthreadstart(a1.func1))t1.start();A2a2=newA2();threadt2=newthreada(newthreadstart(a2.func2))t2.start();}}ClassA1(){publicfunc1(){...断点1}}ClassA2(){publicfunc2(){...断点2}}问题:为什么我程序执行的时候,断点1能断点到,断点2不能,非要1执行过去,进入到Thread.sleep这样空闲的时候才能执行到断点2,按照我的想法,应该是2个断点都能同时断到,这个应该是vs设置问题吧。哪里可以设置阿
解决方案
解决方案二:
同时断到你应该知道同时这个词在线程里就是不能办到的
解决方案三:
我的意思是说,我等着时间,断点1断在那里,断点2也断在那里,2个都能被断点截获
解决方案四:
补充,等于说2个线程的2个断点分别被断点截获,我可以“人为”选择一个线程单步执行,然后选择另一个线程单步执行。
解决方案五:
哥,你不知道CPU怎么工作的么?然后就是你知道中断点后程序就暂停了么?如果你想看多个线程的运行情况,你应该用输出语句,而不是断点。
解决方案六:
线程执行也是有先后的。。。
解决方案七:
如果你想看线程的执行情况,最好用Trace显示。。。
解决方案八:
这是不行的。不要多想了。
解决方案九:
我以为可以阿,Eclipse运行java就可以设置断点,然后按照我说的执行单步,为什么这个不可以。
解决方案十:
引用8楼supersunyi的回复:
我以为可以阿,Eclipse运行java就可以设置断点,然后按照我说的执行单步,为什么这个不可以。
可以同时中两个断点?能给个截图看看么,第一次听说有能同时中两个断点的,中断点然后单步执行不是问题,问题是真的是同时中两个断点?
解决方案十一:
我不是说同一个点,我举个例子,线程1每1秒运行一次,线程2每2秒运行一次,我先设定2个断点,分别在线程1和2上,运行程序后,1秒后线程1的程序运行到断点处,停止运行,再1秒后,线程2的程序运行到断点处,停止运行,这个时候我可以通过vs上某个地方,看见有2个断点被停止在那里,然后我选择一个线程,单步执行。以上是我根据Eclipse的情况说一遍,我觉得这个应该可以的阿/
解决方案十二:
Eclipse没用过,无法理解你说的过程。不过多线程调试,真不适合断点。用输出语句或者打log文件会更好的看到效果。我个人比较喜欢用Console.WriteLine();
解决方案十三:
线程工作原理是这样的,根据你的电脑性能等因素处理数据量线程1:———— ————线程2:————————首先创建一个winform窗体《分别添加一个label和一个button,双击button粘上去下面代码》然后断点你跟一下,看看intShu=0;privatevoidbutton1_Click(objectsender,EventArgse){Threadt1=newThread(newThreadStart(func1));t1.Start();Threadt2=newThread(newThreadStart(func2));t2.Start();}publicvoidfunc1(){Thread.Sleep(1000);label1.Invoke(newMethodInvoker(delegate{label1.Text="5";}));Thread.Sleep(2000);}publicvoidfunc2(){Thread.Sleep(2000);label1.Invoke(newMethodInvoker(delegate{label1.Text="10";}));Thread.Sleep(2000);}