V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
neptuno
V2EX  ›  Java

请问一下大家, Java 中动态代理是线程安全的吗?

  •  
  •   neptuno · 2018-08-24 09:04:47 +08:00 · 2848 次点击
    这是一个创建于 2285 天前的主题,其中的信息可能已经有所发展或是发生改变。
    neptuno
        1
    neptuno  
    OP
       2018-08-24 09:05:37 +08:00
    初学没多久,想问一下大家,java 中动态代理是线程安全的吗?
    neptuno
        2
    neptuno  
    OP
       2018-08-24 09:06:08 +08:00
    还是说我对线程安全有什么误解
    hduwillsky
        3
    hduwillsky  
       2018-08-24 09:07:22 +08:00 via iPhone
    先要弄清是什么,再问为什么
    codechaser
        4
    codechaser  
       2018-08-24 09:07:26 +08:00 via Android
    @xumincheng123 得看什么处理
    neptuno
        5
    neptuno  
    OP
       2018-08-24 09:13:14 +08:00 via Android
    @hduwillsky 所以动态代理线程安全吗
    neptuno
        6
    neptuno  
    OP
       2018-08-24 09:15:26 +08:00 via Android
    @codechaser 比如说里面获取代理类 class 的时候,获取字节码
    BBCCBB
        7
    BBCCBB  
       2018-08-24 09:16:05 +08:00
    你对线程安全有误解.. 动态代理只是生成一个代理类而已, 和代理模式一样的道理, 线程安全和是不是动态代理没啥关系
    neptuno
        8
    neptuno  
    OP
       2018-08-24 09:17:52 +08:00 via Android
    @BBCCBB 好的👌谢谢,看了下源码,获取代理类的时候,是对 cache 进行了同步的
    CoderEQ
        9
    CoderEQ  
       2018-08-24 09:21:35 +08:00 via Android
    你找你同学替你去买早饭,如果你说:你们谁帮我去买个早饭?然后没啥限制,导致有俩同学都买来了早饭。那就是不安全的。如果你说:你们谁帮我去买早饭,买一份就行了,然后大家举手,然后你点名说,张三就你去吧。然后你就只会买到一份早饭。嗯,不知道我的理解有没有问题,仅供参考
    neptuno
        10
    neptuno  
    OP
       2018-08-24 09:28:05 +08:00
    @CoderEQ 谢谢你,这个是我懂的,可能我提问没说清楚,我的意思是获取代理对象的时候会不会有多个对象,刚才看了下源码,发现获取代理类的时候是对 cache 进行同步的
    ClutchBear
        11
    ClutchBear  
       2018-08-24 09:32:49 +08:00
    是不是线程安全根本在于
    多个线程是不是对同一个数据进行写操作.
    如果没有, 就永远不会有线程安全的问题.
    neptuno
        12
    neptuno  
    OP
       2018-08-24 09:38:06 +08:00
    @ClutchBear 好的,我明白了,谢谢哈
    deming
        13
    deming  
       2018-08-24 09:40:23 +08:00
    动态代理可以理解为是一种模式,一种编程的手段和方式,作用就是生产代理对象,完成某些额外功能。

    线程安全,则是另外一个概念。线程安全跟是否有“共享资源”,是否有多线程访问“共享资源”有关系。
    neptuno
        14
    neptuno  
    OP
       2018-08-24 09:42:11 +08:00
    @deming 谢谢,受益匪浅
    hduwillsky
        15
    hduwillsky  
       2018-08-24 10:08:50 +08:00
    @neptuno 楼上各位大佬已经帮你弄清楚了。
    neptuno
        16
    neptuno  
    OP
       2018-08-24 10:26:21 +08:00
    @hduwillsky 好的,谢谢,麻烦你了
    hduwillsky
        17
    hduwillsky  
       2018-08-24 11:31:17 +08:00 via iPhone
    @neptuno 不客气,李时珍的皮
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1179 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:07 · PVG 07:07 · LAX 15:07 · JFK 18:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.