![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
pumbaa51203889
这个作者很懒,什么都没留下…
展开
-
AtomicInteger—线程安全的ID自增对象
AtomicInteger,可以用做线程安全的ID自增对象,具体的资料网上搜索一下很多,这边就不列举了,下面是一个例子 public static ConcurrentHashMap<String, AtomicInteger> ID = new ConcurrentHashMap<String, AtomicInteger>(); ID.put("Char...原创 2012-06-20 15:48:23 · 677 阅读 · 0 评论 -
计算各种语言字符长度
中日韩等字符占2个字节,英文数字等占1个字节 public static int getStrByteLen(String name){ char[] chars = name.toCharArray(); int len = 0; for (int i = 0; i < chars.length; i++) { int k = 0x80; if (chars...原创 2014-01-23 16:11:17 · 660 阅读 · 0 评论 -
for和foreach在遍历时修改列表的区别
通过for(int i = 0;i<list.size;i++)这种方式遍历列表时,如果这时候修改了list的引用,那么遍历的内容马上会变成新的list的内容;这时候新增或删除list时也不会报错,但是操作的结果会马上生效 通过for(Object obj : list)这种方式遍历列表时,如果这时候修改了list的引用,那么遍历的内容还是原list的内容,而且这时候不能对lis...原创 2013-08-27 18:03:45 · 334 阅读 · 0 评论 -
排行榜时时排序算法
可以维护一个定量的ArrayList,当数据变化时,通过二分查找法更新或者插入原创 2015-03-16 15:14:42 · 520 阅读 · 0 评论 -
DelayQueue
使用DelayQueue时,如果队列任务的run方法里面执行的代码没有做异常处理时,当发生异常时队列线程就无法继续执行了。所以任务执行的代码一定要加异常处理...原创 2013-10-31 11:13:38 · 89 阅读 · 0 评论 -
Collections.sort
Collections.sort排序方法在JDK6中1表示交换,非1表示不交换,但是在JDK7中-1才表示不交互,所有有两种改法1、return new Integer(a).compareTo(new Integer(b));2、return a > b ? 1 : -1;...原创 2016-05-12 10:59:19 · 86 阅读 · 0 评论 -
jetty+log4j
在jetty中,如果引用第三方jar包,可以把jar包放到jetty/lib/ext中。但是如果有用到log4j,那么log4j.jar需要放到war包中,放到jetty/lib/ext中没有效果原创 2016-06-01 22:45:47 · 474 阅读 · 0 评论 -
有关Future.cancel(mayInterruptIfRunning)参数的意义
不管mayInterruptIfRunning的值是true还是false,如果任务还没有开始执行,那么就会停止掉。如果任务已经执行了。那么下次任务就不会执行了。但是如果任务里面有用到while (!Thread.interrupted()),那么本次任务会一直执行,只有mayInterruptIfRunning=true马上中断线程才能停止任务。 ...原创 2016-08-10 15:14:52 · 1617 阅读 · 0 评论 -
有关HashMap和ConcurrentHashMap的应用
HashMap不支持并发,但是支持排序,可以支持根据key和value来进行排序ConcurrentHashMap支持并发,但是不支持排序原创 2014-10-31 15:07:22 · 107 阅读 · 0 评论 -
多线程并发开发心得
可以通过【加锁】和【队列】来处理多线程下并发开发的问题 首先说加锁,我觉得加锁的操作是针对全局的,例如在创建用户名称时,需要验证用户名称是否唯一,这时候就可以通过加锁来防止并发调用时出现用户名一致的问题这时候要把Lock锁设置成static静态全局变量,才能保证多线程下用的是同一个锁 队列是针对局部的,例如玩家打怪,这时候可以给每只怪创建一个队列,只要让同时攻击这只怪物的玩...原创 2013-02-21 16:40:53 · 310 阅读 · 0 评论 -
java对象池
当创建的对象为中大对象时,可以采用对象池,减少创建对象的开销;但是如果是小对象的话,就直接创建了,因为维护对象池也是需要开销的。一般对象里面有大byte[] 和大char[]都可以采用对象池...原创 2013-07-12 11:23:01 · 78 阅读 · 0 评论 -
ConcurrentHashMap压力测试结果
1、往ConcurrentHashMap中连续写100W条数据花了2000毫秒,从这100W条数据中查询花了1毫秒2、往ConcurrentHashMap中连续写500W条数据花了18420毫秒,从这500W条数据中查询花了1毫秒3、往ConcurrentHashMap中连续写1000W条数据服务器超时 以上结果表示ConcurrentHashMap在于写的瓶颈,读没有压力 ...原创 2012-03-01 16:46:11 · 199 阅读 · 0 评论 -
有关Lock和synchronized的作用范围
使用Lock和synchronized时,要保证使用同一个锁对象,这样才能保证多线程下的同步。例如有一个方法是验证名称是否重复,这时候会在这个验证方法里面加锁保证代码同步执行(例如用Lock)这时候Lock要定义成static静态全局变量,而不能定义在这个方法里面,这样才能保证每个调用这个方法的线程用的是同一个锁,才能保证代码同步执行。...原创 2013-03-21 11:29:48 · 583 阅读 · 0 评论 -
有关List类型传参的问题
当你需要把一个List对象传到其他方法进行操作时,需要传一个已经实例化好的对象过去,然后在调用的方法里面通过list.add方法来修改这个List对象。如果你传了一个List对象过去,然后在调用的方法里面进行实例化的话,那么是取不到该对象的例如以下代码:List<Integer> list = new ArrayList<Integer>(); setLi...原创 2012-03-27 15:38:00 · 758 阅读 · 0 评论 -
java中如何删除list项
如题,在java中如何删除list项有两种方法:一、采用Iterator方式删除List<Integer> List = new ArrayList<Integer>(); Iterator<Integer> iter = List.iterator();while (iter.hasNext()) { iter.remove();...原创 2012-03-31 19:52:39 · 248 阅读 · 0 评论 -
有关List和ConcurrentHashMap遍历时修改的问题
List在迭代器遍历的时候,不能直接对List进行添加和删除,否则会报异常(删除可以用迭代器删除),所以这时候如果想对List进行操作的话,最好是把数据放到一个新的List里面,然后对新的List进行操作 List可以用for (int i = 0;i<list.size();i++)这种方式来遍历,这种遍历方式内部不锁定(遍历时添加删除不会报异常),效率最高,但是当写多线程时要...原创 2012-08-10 15:40:54 · 1027 阅读 · 0 评论 -
解决CopyOnWriteArrayList不能排序的问题
CopyOnWriteArrayList可以解决并发时候修改list的问题,但是CopyOnWriteArrayList本身是不能用Collections.sort进行排序的,所以要对CopyOnWriteArrayList进行排序,可以使用以下方法: private List<Integer> list = new CopyOnWriteArrayList<Integ...原创 2013-05-24 14:17:22 · 945 阅读 · 0 评论 -
获取当前时区偏移值
//获取时区偏移(例如北京时间是+8,那么以下方法获得的值就是28800000毫秒)Calendar calendar = new GregorianCalendar();System.out.println(calendar.getTimeZone().getOffset(System.currentTimeMillis()));...原创 2013-06-18 17:32:55 · 2816 阅读 · 0 评论 -
有关java volatile关键字的理解
volatile是一种程度较轻的同步机制,它的作用就是在于某个线程修改了变量之后,其他线程看到的变量值也同步了,提高了可见性。但是要通过volatile来实现真正的同步,也是有条件的1、对变量的写操作不依赖于当前值。2、该变量没有包含在具有其他变量的不变式中。满足了以上两个条件,才能通过volatile实现真正的同步第一个条件指的是n++,n=n+1这种情况第二个条件通过以...原创 2013-07-03 16:53:23 · 65 阅读 · 0 评论 -
servlet+jetty架设http服务端
一、工具eclipse java Junojetty-distribution-8.1.17.v20150415(可以从http://download.eclipse.org/jetty/下载)我用的是eclipse java版本,所以不支持发布web程序,可以通过安装插件来解决插件地址http://download.eclipse.org/releases/juno ...原创 2016-03-09 10:51:15 · 279 阅读 · 0 评论