欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

线程安全问题

程序员文章站 2022-05-05 23:13:26
...

1.文件冲突

 * 1.采用悲观锁和乐观锁机制解决文件冲突; 
 * 2.例如: 
		    a.VSS 微软提供的版本控制工具,采用就是悲观锁方式. 
		表示一个线程在访问文件时,另一个线程不允许访问.所以,解决线程安全问题. 
		但是开发过程中,多人维护同一个文件时,工作效率低.所以,一般情况下,一个文件只分配给一个人维护. 
		   b. CVS/SVN 开源的,采用乐观锁的方式维护文件的安全. 
		在管理文件时,给文件增加版本号,每一次修改版本号都会自动加1.后提交修改操作的线程不允许提交.必须先更新,然后修改,然后再提交. 

2.数据冲突

1.JVM数据是如何存储的?
内存结构:
例如:虚拟机执行 User u1 = new User(“z3”)这行代码
1.先将类加载到方法区
2.栈中生成引用,堆中产生对象,对象的属性为z3
又执行代码:User u2 = u1; //2个引用执行同一个对象
线程安全问题
这时就会产生线程不安全的问题
解决办法:
1.线程同步,对同一资源进行线程的控制访问,即:多线程并发对同一个对象进行访问,可以采用线程同步机制. (加锁)
2.多例创建对象,让一个线程访问一个对象,如:
线程安全问题