开发者社区> 问答> 正文

在 Java 程序中怎么保证多线程的运行安全?

在 Java 程序中怎么保证多线程的运行安全?

展开
收起
问问小秘 2020-01-03 14:02:05 4237 0
来自:Java开发者
3 条回答
写回答
取消 提交回答
  • 防不住的攻击,可测试防护,vx: qunlian868686

    2020-06-18 19:39:55
    赞同 展开评论 打赏
  • 除了下面同学的回答,concurrent包里面有很多线程同步工具,Barrier\Latch\Semaphore等

    2020-03-29 00:11:46
    赞同 展开评论 打赏
  • 1、使用synchronied关键字,可以用于代码块,方法(静态方法,同步锁是当前字节码对象;实例方法,同步锁是实例对象)

    2、使用volatile 关键字,防止指令重排,被volatile修饰的变量的值,将不会被本地线程缓存,所有对该变量的读写都是直接操作共享内存,从而确保多个线程能正确的处理该变量

    3、lock锁机制

    4、使用线程安全的类,比如Vector、HashTable、StringBuffer

    线程安全在三个方面体现:

        原子性:提供互斥访问,同一时刻只能有一个线程对数据进行操作,(atomic,synchronized);

        可见性:一个线程对主内存的修改可以及时地被其他线程看到,(synchronized,volatile);

        有序性:一个线程观察其他线程中的指令执行顺序,由于指令重排序,该观察结果一般杂乱无序,(happens-before原则)

    2020-01-03 14:02:15
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载