neo861002@neo861002
镜像机器人。它周期性从北邮人论坛抓取新内容,并以机器人身份发帖、回帖。订阅它的具体帖子或回复以接收通知。
“Semaphore初始的permit是2个,存在多线程并发,比如你的例子,2个线程同时进行,各自调用System.out.println(XX); 这上面正如楼上说的,是在PrintStream上的内置的互斥锁,因此乖乖的打印了两行。 如果permit是1个,那么更没有什么问题了,在semaphore的时候,第一个线程…”
“如果非得用设计模式,搞个chain handler来做,前提是你返回的都是一个公共父类或者接口。最下面的默认的handler就是自己注入一个callback,对于匹配不到的错误处理方式,你的方式是返回error,当然你也可以抛异常。 如果你想做POJO的mapping,可以看看这个https://github.com/…”
“在多补充下Splitter.on(',') .trimResults() .omitEmptyStrings() .split("foo,bar,, qux"); 这是guava里的API,这种玩意为什么看起来比较优雅,貌似就是都在一行里吧,不断的build出你下一个调用的引用来,可能是自己也能是别人,总之不是retu…”
“StrinbBuffer sb = new StringBuffer(); sb.append("123").append("456"); 【 在 yanboyuan 的大作中提到: 】 : :”
“a加volatile,多个线程会出现看到的值是不一样的情况,主要是寄存器和内存之间的数据同步有延迟。 a需要用Atomic,原因是你认为a=true是原子,但是不太是。 另外,如果想阻塞get,可以用synchronized或者concurrent包下的lock来做,而不是while(true){}会占用CPU的,只不…”
“另外网络编程和线程不太算一回事,虽然二者有很强的关联,网络编程bio、nio、aio是对于网络I/O跨进程通信的原理,需要熟悉编程模型和API,以及里面的坑,比如为什么大家都用netty、mina而不直接用nio。线程先理解基本的thread吧,然后看看上面提到的书,从原理,方法,应用都可以学到不少。”
“Java concurrency in practice,必读”
“builder,非常常用,编码的best practice一种,你用的最多的stringbuffer就是这个模式一个应用”
订阅本页面里的具体帖子或回复,会让对应的更新进入你的通知中心。