问题是这样的:编译通过,但是运行的时候在输出完“Thread-0...1”后,cmd就挂掉不动了,就像死循环一样。这个是什么问题啊?代码都是照着视频打的,就是名称不一样而已。其他格式什么都没有变,但是就是挂了,就像死循环一样编译通过,也可以运行,就是程序一直不停止。
问题发现及解决过程:原来是按照视频上面的代码打的,但是在我运行的时候就出现了此问题。然后我就郁闷了,怎么看视频上面老师运行的都没有问题的。我就回头看了一次视频,发现老师的也有同样的问题,而且听到一句:“Ctrl+c“。然后我就试了下,在输出完以后按了“Ctrl+c“。果然跳出程序了。这样才知道“Ctrl+c“可以终止程序执行。惭愧啊。然后我又想,为什么程序不会自己跳出来。就回头看了代码,才发现while(true)这里在 i == 0 以后还是会进入循环,只是没有执行动作而已。所以最后把true改为 i > 0 了。
感慨:1.视频里面老师的代码只是为了让我们学会使用各知识点,所以代码不是完美的。
2.在碰到问题的时候要认真的检查代码。发现问题所在然后解决他。
3.有时候问题会出现在很基础的地方,所以写代码的时候要严谨。
4.看视频要认真,有时候一句话就是一个知识点。
题外话:还是蛮喜欢编程的,虽然现在只是在学习,跟着视频打代码,但是往往或多或少会出现一些问题,但是我很喜欢那种出现问题然后发现他然后解决它的感觉。不知道大家有没有。- class Test implements Runnable
- {
- private int i = 50;
- public void run()
- {
- while(true)
- {
- if(i>0)
- {
- System.out.println(Thread.currentThread().getName()+"..."+i--);
- }
- }
- }
- }
- class RunnableTest
- {
- public static void main(String[] args)
- {
- Test t = new Test();
- Thread t1 = new Thread(t);
- Thread t2 = new Thread(t);
- Thread t3 = new Thread(t);
- t1.start();
- t2.start();
- t3.start();
- System.out.println("Hello World!");
- }
- }
复制代码 |