“一个只有行为,没有属性的类是线程安全的” 请问各位这句话对吗?请举出实例。

问题描述

“一个只有行为,没有属性的类是线程安全的” 请问各位这句话对吗?一直在迷惑中。请详细解释下,谢谢。 问题补充:牟盖东 写道

解决方案

引用请如果将这个类设计为单例的工具类,其中的方法都为静态的。然后其他的类使用这些方法处理数据,或者通过这些方法获取资源,是否会出现线程问题呢? 正如之前说过的:引用而作为一个线程中的临时变量使用的话,这个类去访问别的共享数据仍然是能产生共享冲突的。 完全有可能出现,关键在于共享数据上。阁下问这样的问题,相比也是多线程程序没有写过多少。需要好好体会一下每个线程对共享数据访问时候,共享数据的变化情况。引用再请问方法在JVM内存中是如何来存储的呢?我只知道JVM会为每个对象开辟出一块内存,其中的 static 属性则会存储在这些对象内存之外。一个静态方法和一个普通的方法在内存中又是怎样存储的呢?方法的存储位置与静态和非静态没有多大联系了,不像数据。他们都是存储在代码段的。 (汇编中寄存器CS对应这个段的起始地址,编译器会根据方法名去找到对应的偏移量)
解决方案二:
所谓线程安全,就是没有共享数据的访问冲突。如果一个类没有数据成员,也就谈不上被共享,自然也就不能产生冲突。而作为一个线程中的临时变量使用的话,这个类去访问别的共享数据仍然是能产生共享冲突的。当然,平常所谓的 线程安全 是这个类被共享的时候不会冲突,像StringBuffer类。而StringBuilder类则是非线程安全的
解决方案三:
行为可以理解为函数,没有属性的类如果是指类属性,那么我认为是对的。1.线程无非就是数据的同步,如果在程序当中来讲的话,数据应该是用变量表示的。如果操作的是对象变量,那么各个线程之间是互不影响的。2.类变量可以理解为类当中的静态变量,如果多个对象实例在多线程环境下操作类变量,那么肯定会造成脏数据的,即线程的不安全。

时间: 2024-09-05 20:23:29

“一个只有行为,没有属性的类是线程安全的” 请问各位这句话对吗?请举出实例。的相关文章

菜鸟 求解答-html中一个标签如果有两个类属性,里面有些属性冲突,那属性该遵循哪个的

问题描述 html中一个标签如果有两个类属性,里面有些属性冲突,那属性该遵循哪个的 html中一个标签如果有两个类属性,里面有些属性冲突,那属性该遵循哪个的 解决方案 这个是根据你css样式的前后顺序决定的,例如样式表中这样写 .tb{color:red;} .tab{color:green;} 最终的效果是显示绿色,因为tab的写在tb后.你可以换个顺序试试 解决方案二: [vb6.0]一个自用html标签属性存取数据的类 解决方案三: 这个是就近原则 你的标签样式离的最近的那个格式 解决方案

在silverlight里自定义一个控件,在自定义控件类里面定义依赖属性出错。

问题描述 在silverlight里自定义一个控件,在自定义控件类里面定义依赖属性出错. 在silverlight里自定义一个控件ReplicationEventComboBox继承ComboBox,在ReplicationEventComboBox类里面定义依赖属性TextProperty. 其中ReplicationEventComboBox中 private TextBlock _text; 字段在方法OnApplyTemplate()中被赋值 var text = this.GetTem

html-本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题

问题描述 本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题 FIREFOX浏览器,代码如下: HTML代码片段: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @import url(template/default/styl

一个方便AJAX开发的通用类

ajax  Name: AJAXRequest Author: HotHeart(xujiwei) Site: http://www.xujiwei.cn/ Blog: http://www.xujiwei.cn/blog/ Copyright (c) 2006, All Rights Reserved 类名:AJAXRequest 版本:0.3 日期:2006-12-18 介绍:AJAXRequest是一个方便AJAX开发的通用类,可以方便地进行一些AJAX中需要的操作,从而简化开发步骤,减少

一个读取xml文件内容的类

xml 一个读取xml文件内容的类 package project.util.xml; import java.io.*;import java.util.*;import javax.servlet.http.*;import org.apache.log4j.*;import org.jdom.*;import org.jdom.input.*; /*** <p>Title: <font color="steelblue" size="10"&

c#在一个窗口用timer事件怎么触发另一个窗口的enable属性

问题描述 c#在一个窗口用timer事件怎么触发另一个窗口的enable属性 form1窗口里 private void timer1_Tick(object sender, EventArgs e) { DateTime timeend = Convert.ToDateTime(textBox2.Text);//设置结束时间 textBox1.Text = dt.GetDateTimeFormats('M')[0].ToString();//设置当前时间 string timeday = Da

sqlserver-尝试写了一个 JDBC 操作 SQLServer 的工具类,但是好像有问题,求大神帮忙指正

问题描述 尝试写了一个 JDBC 操作 SQLServer 的工具类,但是好像有问题,求大神帮忙指正 java新人,尝试写了一个 JDBC 操作 SQLServer 的工具类,但是好像有问题,调用 insert 指令没问题,而 select 指令出现如下报错: com.microsoft.sqlserver.jdbc.SQLServerException: ')' 附近有语法错误. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFr

c#怎么实现在一个窗口操作另一个窗口的enabled属性

问题描述 c#怎么实现在一个窗口操作另一个窗口的enabled属性 我用静态变量定义一个类public class bool value在a窗口填写formb b=new form b();b.enabled=app.value,在b窗口填写app.value=false:为啥运行时一直弹b框 解决方案 formb b=new form b() 这样你操作的不是显示的那个formb,而是你又新创建的那个. 你可以用formb b=Application.OpenedForms["formb&qu

PHP中类属性与类静态变量的访问方法示例_php技巧

本文实例讲述了PHP中类属性与类静态变量的访问方法.分享给大家供大家参考,具体如下: <?php /* PHP类属性与类静态变量的访问 * Created on 2016-7-13 */ class test { const constvar='hello world'; static $staticvar='hello world'; function getStaticvar(){ return self::$staticvar; } } $obj=new test(); echo test