HashMap 是我们日常最常见的一种容器,它以键值对的形式完成对数据的存储,但众所周知,它在高并发的情境下是不安全的。尤其是在 jdk 1.8 之前,rehash 的过程中采用头插法转移结点,高并发下,多个线程同时操作一条链表将直接导致闭链,死循环并占满 CPU。 当然,jdk 1.8 以来,对 ...
分类:
编程语言 时间:
2017-12-13 11:52:42
阅读次数:
233
关键字synchronized可以使多个线程访问同一个资源具有同步性,而且他还具有将线程工作内存中的私有变量与公共内存中的变量同步的功能。 以-server服务器模式运行得到死循环 得到上面结果的原因是各个线程间的数据值没有可视性造成的。而关键字synchronized具有可视性。 更改Servic ...
分类:
其他好文 时间:
2017-12-09 22:29:57
阅读次数:
136
测试 程序处于死循环,为何呢?代码线程被停止了从未被执行。 原因: 在启动RunThread.java线程时,变量private boolean isRunning=true;存在于公共堆栈及线程的私有堆栈中,在JVM被设置为-server模式时为了线程 运行的效率,线程一直在私有堆栈中取得isRu ...
分类:
其他好文 时间:
2017-12-09 19:43:48
阅读次数:
246
关键字volatile的主要作用是使变量在多个线程间可见。 测试如下 程序开始运行后 根本没停下来。原因是main线程一直处理while()循环,导致程序不能执行下面的代码。解决办法肯定是用多线程技术 ...
分类:
其他好文 时间:
2017-12-09 18:19:32
阅读次数:
183
测试如下 但当上面的例子代码的格式运行在-server服务器的模式中64bit的JVM上时,会出现死循环 解决的方案时使用volatile关键字 关键字volatile的作用是强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量的值 ...
分类:
其他好文 时间:
2017-12-09 18:05:27
阅读次数:
114
同步方法容易造成死循环。 结果运行: 线程B永远得不到运行的机会,锁死了。 这时可以使用同步代码块来解决这样的问题 更改Service.java文件代码 运行结果不再出现同步等待的情况。 ...
分类:
其他好文 时间:
2017-12-09 14:55:51
阅读次数:
182
错解: 这是一个死循环,问题出在i=i*(-1)。若i为负数,则为死循环。 正解: 引入新变量b,添加第二个if条件来判断当b为负数时改怎么做。 b为负数时在第二个if里执行语句变为整数,从而进行累加。 ...
分类:
其他好文 时间:
2017-12-07 23:50:14
阅读次数:
155
思路: socket必须要随项目启动时启动,所以需用Spring自带的监听器,需要保持长连接,要用死循环,所以必须另外起线程,不能阻碍主线程运行 1.在项目的web.xml中配置listener 2.因为是一个独立的线程,所以需要调用的注入类不能通过@resource或@aotowire注入,需要应 ...
分类:
其他好文 时间:
2017-12-07 18:55:02
阅读次数:
181
在知乎上看到一个问题《java中volatile关键字的疑惑?》,引起了我的兴趣 问题是这样的: 这段代码的主要目的是:主线程修改非volatile类型的全局变量stop,子线程轮询stop,如果stop发生变动,则程序退出。 但是如果实际运行这段代码会造成死循环,程序无法正常退出。 我们当然知道由 ...
分类:
编程语言 时间:
2017-12-04 20:38:42
阅读次数:
219
早就知道pygame模块,就是没怎么深入研究过,恰逢这周未没约到妹子,只能自己在家玩自己啦,一时兴起,花了几个小时写了个打飞机程序。 很有意思,跟大家分享下。 先看一下项目结构 再晒下项目成果图 实现步骤 一、首先在 config/settings.py 中进行以下功能的实现 游戏初始化 游戏混音器 ...
分类:
编程语言 时间:
2017-12-03 18:54:21
阅读次数:
590