A_A333 2018-01-18 02:00 采纳率: 0%
浏览 956
已采纳

java并发问题(SSH相关)

问一:多个客户端访问同一个带有字段的类,会不会有触发到线程安全的问题
问二:多个客户端访问同一个代码块,都会有自己的堆栈吗?
问三:Struts中单例和多例是不是为了解决线程安全的问题。才会有多例
,为每个客户端都创建一个实例

  • 写回答

8条回答 默认 最新

  • bxl_1986 2018-01-18 02:29
    关注

    问一:多个客户端访问同一个带有字段的类,会不会有触发到线程安全的问题

    答:多个客户端访问同一个带有字段的类,如果只是简单的数据读取,不做修改是没有问题的。如果做数据的修改,就会引发线程安全的问题。
    一般情况下,会枷锁来控制。锁要加载,多个线程的交接处。例如,如果多个客户端访问的是同一个主机(一个jvm),通过关键字synchronized就可以控制,如果是多台主机,就要考虑分布式锁了

    问二:多个客户端访问同一个代码块,都会有自己的堆栈吗?
    首先堆和栈是两块内存。堆一般放的是类实例和全局变量。栈一般存放局部变量。多个客户端访问同一个代码的时候,堆是同一个,栈就不是了。

    问三:Struts中单例和多例是不是为了解决线程安全的问题。才会有多例
    ,为每个客户端都创建一个实例
    一般而言单例是为了实现数据共享(查询用).采用单例可以减少类实例的个数,从而减少内存占用和垃圾回收。
    还有一些工具类也可使用单例,不会设计到共享数据的增删改查
    用多例一般会设计到数据的修改,还用单例的话,就会引发线程安全的问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵