您的位置:首页 > 编程语言 > Java开发

关于java 线程安全的总结

2016-12-24 15:13 267 查看
线程安全:

何为线程安全?在JVM分配的内存空间中,当一份数据被多个线程访问时,如果涉及修改,此时数据按照正常逻辑变化,而不是发生一些意想不到的结果,此时该数据为线程安全

java中哪些线程安全

1.变量:局部变量与实例变量,局部变量在每次方法调用时,都会开辟栈空间,不涉及到共用一份内存中的数据,同理实例变量也一样,所有线程安全
               类变量(static),在内存中共享一份内存空间,因此为非线程安全
2.方法:如果类方法与实例方法中不涉及到对静态变量的修改等操作,则也为线程安全

解决方式:

1.使用代码锁机制,也就是synchronized,对内存中共享的数据采用锁机制,每次只允许一个线程进行访问修改,采用以时间换空间,保证数据一致性
2.使用ThreadLoacle机制,也就是线程局部变量,每个线程都会分配一份数据,线程对该数据的改动都是基于线程自己的,而不会影响到其他线程,保证了各线程数据的一致性,采用以空间换时间的机制

总结:

结合java 内存空间的分配来理解多线程安全问题

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: