讲师回答 / MartonZhang
从报错中看是OpenJDK版本的问题,应该是-f参数在你当前版本的VM上不支持,如果要使用-f,貌似要JDK1.7以上,另外注意你的操作系统64位还是32位的,64位的貌似要加个参数,具体记不清了,你google一下!
2015-02-17
讲师回答 / MartonZhang
您好,加入volatile其实是通过加内存屏障使得每次读写volatile变量都从主内存中刷新,这样可以保证volatile变量及其之前的变量值的改变可以被其它线程立即看到,这当然前提是该变量是共享的,在这里可以保证不会出现打印出来的两个或三个相同count值的情况,跟其他的没有关系!
2015-02-10
讲师回答 / MartonZhang
另外,第一种情况,你要搞清楚,Ingeger是不能作为同步的对象的,因为容易发生拆装箱操作,比如你的count--,实际上相当于Integer count = new Integer(count-1);这个时候很明显,new出了一个新的Integer对象,已经不是原来的对象了,同步自然也就无效了!你可以去看下Integer的一些方法的源码!或者看下一些书对拆装箱部分的讲解!
2015-02-10
看完了您的视频,其中extends Thread 类的的那个例子设计的有缺陷.那三个火车票窗口应该是共享那五张火车票,相当于多个线程访问同一个资源,您将票总数(ticketsCounts)设置为成员变量就是错误的,所以结果就是错误!期待您更严谨的课程内容
2015-02-04