- 浏览: 5052 次
- 性别:
- 来自: 北京
最新评论
文章列表
内存模型 (memory model) 内存模型描述的是程序中各变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存取出变量这样的低层细节.
不同平台间的处理器架构将直接影响内存模型的结构.
在C或C++中, 可以利用不同操作平台下的内存模型来编写并发程序. 但是, 这带给开发人员的是, 更高的学习成本.相比之下, java利用了自身虚拟机的优势, 使内存模型不束缚于具体的处理器架构, 真正实现了跨平台.(针对hotspot jvm, jrockit等不同的jvm, 内存模型也会不相同)
内存模型的特征: a, Visibility 可视性 (多 ...
1, 为什么wait与notify之前必须要加synchronized?
答案其实很简单,也是为了防止等待-通知机制出现race condition
为什么会出现race condition ?答: 对象在被wait之前已经被另一线程notify , 之后的wait 会永久停止,并导致deadlock(死锁)
理想情况:1, 第一个线程判断该对象是否要wait2, 第一个线程将对象wait3, 第二个线程再将对象notify
实际情况1, 第一个线程判断该对象是否要wait2, 第二个线程将对象notify3, 第一个线程将对象wait
为了防止这些情况,才需要在wait与notify ...
1, 保证线程安全的三种方法 :a, 不要跨线程访问共享变量b, 使共享变量是 final类型的c, 将共享变量的操作加上同步
2, 一开始就将类设计成线程安全的 , 比在后期重新修复它 ,更容易 .
3, 编写多线程程序 , 首先保证它是正确的 , 其 ...
需要导入
import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant;
//取得响应数据 public String search(String sRequest,String identity){ Variant responseXML = null; // 定义一个Dispatch Dispatch doc; // 声明一个activeX组件 ActiveXComponent app = null; ...
Convert源码
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
/**
* @author 李义海
* QQ:407009617
* pdf格式文件转化为swf格式插件
* 插件要求:必须安装SWFTools工具
* 本例安装在:D:\\SWFTools\\pdf2swf.exe 可以根据自己的路径进行修改
*/
public class Convert {
// 文件名:fileName 文件路径(不带文件名):destPath
public s ...