Java锁的种类以及辨析(四):可重入锁
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。
android中方便为fragment写入参数的FragmentArgs简介
原文链接 作者:Hannes Dorfmann 译者:赵峰
Android开发有时候会令人头痛。你不得不为诸如建立fragment这样简单的事情写很多代码。幸运的是java支持一个强大的工具:注释处理器(Annotation Processors)。
Fragment的问题是你不得不设置很多参数,从而让它正常运行。很多android开发新手通常这样写:
{
private int id;
private String title;
public static MyFragment newInstance(int id, String title)
{
MyFragment f = new MyFragment();
f.id = id;
f.title = title;
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
Toast.makeText(getActivity(), "Hello " + title.substring(0, 3),
Toast.LENGTH_SHORT).show();
}
}[/code]
这样做怎么了?我已经在自己的设备上尝试过了,它很好用?
线程基础之JAVA和C++0x的特性
译文连接 译文地址 译者:衣着时 校对:丁一 (有兴趣参与试译或校对的同学,请加入并发网试译者QQ群:369468545)
JAVA特性
JAVA线程通常是一个带有run()方法的java.lang.Thread的子类,然后调用这个子类对象的start()方法。我们之前定义过,数据竞争是因为两个线程同时访问内存单元,在JAVA中,内存单元是一个对象字段或数组元素。
由于JAVA旨在支持运行不受信任代码作为受信任的应用程序的一部分,必须限制不受信任代码的数据争用造成的破坏。因此不允许数据争用的任意行为,所以,JAVA语言规范包含了一个复杂的规则集,用来定义线程间的共享对象的行为,包括数据争用的行为,这些规则的影响甚至专家都觉得惊讶。然而这些规则保证了免除数据争用的程序的连续一致,对于程序来讲是个更加容易的模型。
如上所述JAVA的数据争用定义的可替换的定义是,并发冲突操作必须被阻止同时出现通过执行相同的线程,或者引入强制实施线程间的顺序的同步变量。如果采用了这些机制,就可以说一个内存操作发生在另一个内存操作之前。因此不会发生交叉存储。这基本相当于我们的定义。 阅读全文
gcc的 “-fpack-struct” 编译选项导致程序core dump的分析
感谢网友【nanxiao】的投稿
最近team引入gcov
来做代码分析。编译好的程序在Solaris
上运行的好好的,结果在Linux
上一运行就会产生core dump
文件。这篇文章就介绍整个分析过程。
首先用gdb
分析core
文件,显示是strlen
调用出了问题:
(gdb)
#0 0x00000034e433386f in __strlen_sse42 () from /lib64/libc.so.6
#1 0x000000000053c57a in __gcov_init ()
#2 0x000000000053c4b9 in _GLOBAL__I_65535_0_g_cmd_param () at source/rerun/aicent_ara_rerun.c:963
#3 0x000000000053dc26 in __do_global_ctors_aux ()
#4 0x0000000000403743 in _init ()
#5 0x00007fff6d6b3ce8 in ?? ()
#6 0x000000000053db55 in __libc_csu_init ()
#7 0x00000034e421ecb0 in __libc_start_main () from /lib64/libc.so.6
#8 0x0000000000404449 in _start ()
由于我们使用的gcc
是用安装包形式安装的,没有源码。所以就从github
上找了相应版本的gcc
源代码,希望能有所帮助。以下是__gcov_init
函数的代码(https://github.com/gcc-mirror/gcc/blob/gcc-4_4_7-release/gcc/libgcov.c):
如何编写属于自己的Java / Scala的调试器
译者:赖辉强 原文地址
在本帖中,我们将探讨Java和Scala的调试器是如何编写和工作的;系统自带的调试器,例如:Windows中的WinDbg或者是Linux/Unix中的gdb,会获取操作系统直接提供给他们的链接入口来启动,从而指导和操作外部程序的状态。工作在操作系统顶部抽象层的Java虚拟机对字节码的调试有独立的处理架构。
这个调试的框架和APIs具有全开源、文档化、可扩展的特点,这意味着你可以轻松毫无顾忌的编写自己的调试器。该框架当前的设计由两大部分构成—JDWP协议和JVMTI API层。其中每个都有一系列使性能最佳的优点和使用案例。(你也可以阅读这篇文档:深入 JAVA 调试体系)
并发网2014.9月阅读量Top10
金秋已过,转眼又到了月底,并发网9月Top10的阅读量的文章新鲜送到,希望各位看官能喜欢!有任何意见和建议,欢迎告诉我们,我们在努力!~祝大家国庆节快乐
-
Top1 Java锁的种类以及辨析
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及……(2,047 人阅读)
AKKA文档(java版)—类型化角色
原文:doc.akka.io/docs/akka/2.3.6/java/typed-actors.html 译者:小鱼 审校:吴京润
3.2 类型化角色
Akka的类型化角色是活动对象(Active Object)模式的实现。Smalltalk诞生的时候,默认的方法调用由异步派发代替同步操作。
类型化角色由2部分组成,包括一个公共的接口和实现,如果你有“企业级”Java的开发经验,这对你来说会非常熟悉。与普通的角色一样,你有一个外部的API(公共接口实例),将异步的方法调用委托给实现类的一个私有实例。
阅读全文
【iFeve】并发网技术沙龙集锦(含视频)
【先做个小广告:企业技术品牌建设,举办沙龙或者企业内部技术培训,请联系guolei@ifeve.com】
周日那天北京的天气不是很好,看着要下大雨。秋风中偶尔能感觉到丝丝凉意,不过妹子们还是穿短裤,一下子也就热了。沙龙是在车库咖啡举行的,车库咖啡是创业者的聚集地,它所在的那条街也改为叫中关村创业大街了。
此次参加沙龙的朋友一共186人(不包含未签到的),好吉利的数字。这次是iFeve的第一次,我们想做一场不一样的沙龙,我们想像做内容一样做沙龙。
本次活动的PPT在这里。感谢我们的协办方Coding、七牛云。下面是一些精彩合集,视频地址如下:
1. 并发编程实战
2. 如何优化Java应用
3. Go的并发之美
AKKA文档(java版)—角色的引用、路径和地址
原文:http://doc.akka.io/docs/akka/2.3.6/general/addressing.html 译者:小鱼 审校者:吴京润
2.5 角色的引用、路径和地址
这一章描述,角色在一个有可能是分布式的角色系统中是如何被识别和定位的。它关系到了角色系统形成的内在监管层级以及角色跨越多个网络节点之间通信的位置透明化。 阅读全文