一、什么是线程安全?
用人话来说:多线程操作共享数据不会出现想不到的结果就是线程安全的,否则,是线程不安全的。
举个例子:
第一个函数第一次和第二次调用的结果不一样,换句话说,不能确定代码的运行顺序和结果,是线程不安全的;第二个函数第一次和第二次输出结果一样,可以确定函数的执行结果,是线程安全的。
居于线程安全的含义,知道线程安全是相对于多线程而言的,单线程不会存在线程安全问题。因为,单线程代码的执行顺序是确定的,可以知道代码的执行结果。
二、锁锁锁
线程不安全是由于多线程访问造成的,那么如何解决?
1.既然线程安全问题是由多线程引起的,那么,最极端的可以使用单线程保证线程安全。
2.线程安全是由于多线程访问和修改共享资源而引起不可预测的结果,因此,如果都是访问共享资源而不去修改共享资源也可以保证线程安全,比如:设置只读属性的全局变量。
3.使用锁。
网友评论