多线程的安全隐患和解决办法


安全隐患:

多线程具有资源共享的特点, 一块资源有可能同时被多个线程共享, 也就是说在同一时刻有多个线程会去访问同一块资源. 例如: 多个线程访问同一块对象, 同一个变量, 同一个文件.
当多个线程同时去访问同一块资源的时候, 这样的行为很容易引发数据错乱和数据安全问题.


去消除多线程的安全隐患, 就要去给它加上一把锁, 这把锁叫做互斥锁.
互斥锁使用格式

@synchronized(锁对象) {
// 需要锁定的代码
};"
注意:锁定1份代码只用1把锁,用多把锁是无效的


互斥锁的优缺点
优点:能有效防止因多线程抢夺资源造成的数据安全问题
缺点:需要消耗大量的CPU资源

互斥锁的使用前提:多条线程抢夺同一块资源

相关专业术语:线程同步
线程同步的意思是:多条线程在同一条线上执行(按顺序地执行任务)
互斥锁,就是使用了线程同步技术

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在上篇中,我们已经讨论过如何去实现一个 Map 了,并且也讨论了诸多优化点。在下篇中,我们将继续讨论如何实现一个线...
    一缕殇流化隐半边冰霜阅读 7,741评论 5 41
  • 引用自多线程编程指南应用程序里面多个线程的存在引发了多个执行线程安全访问资源的潜在问题。两个线程同时修改同一资源有...
    Mitchell阅读 2,033评论 1 7
  • 一、进程和线程 进程 进程就是一个执行中的程序实例,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程。...
    阿敏其人阅读 2,629评论 0 13
  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 1,845评论 0 17
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,781评论 0 11