201671010113 2016-2017-2 《JAVA程序设计》第十八周

  一学期的Java学习结束了,对Java的学习也有一定的感触,一开始的翻转课堂感觉很累,但现在想来,那段时间是我这学期学习Java收获最大的一段时间,非常感谢java老师这学期对我们严格的要求。

  回顾已学过的知识,自我感觉继承、接口那一块应该是整个学期学的最扎实的一块,再往后,不知道是自己松懈了还是各种杂七杂八的事情比赛变多了,后边的学习越来越不扎实了,尤其是到了后面图形用户界面,什么面板什么按钮什么组件,学的真的是一塌糊涂,点名器都不知道从哪开始着手,已经涂涂改改了好几遍,还是在面板那纠结着,想找代码借鉴一下,可是又感觉跟以前不一样,前面的学习都是从基础做起,但这次自主编程,第一个便是点名器,真的感觉有压力,思路是先做好面板,组件放入合适位置,然后用文件名字随机出现,最后事件监听器,再在主方法中调用,感觉自己想法很好,但付诸行动的的时候不知道着手的方向在哪。还要有上周的售票机,我虽然最后做出来了,但是还是不能特别符合要求,我用了三个线程,每个线程都是事先分配好的售出哪几张票,但这会引发不公平,事后我找了同学的代码,运行出来的都是用的接口,而且解决不稳定用的是synchronized关键字,但是没有像老师讲授的那样直接放到类名void的前面,而且必须用if、while语句控制循环,用for循环就会出错,下面是其代码,希望可以讲解一下。

class MyThread implements Runnable{
private int num=10;
public void run() {
while(true){
synchronized (this) {
if(num>0){
System.out.println(Thread.currentThread().getName()+"窗口售:"+"第"+num+"张票");
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
num--;
}
}
}
}
}


public class booking{
public static void main(String args[]){
MyThread mt=new MyThread();
Thread t1=new Thread(mt);
Thread t2=new Thread(mt);
Thread t3=new Thread(mt);
t1.start();
t2.start();
t3.start();
}
}

原文地址:https://www.cnblogs.com/jiayaru/p/8099572.html