社区
C#
帖子详情
实例化两个对象,用两个线程同时访问一个公共方法会不会出现问题?
hjhwfw
2004-08-19 08:11:23
希望大家讨论
...全文
435
24
打赏
收藏
实例化两个对象,用两个线程同时访问一个公共方法会不会出现问题?
希望大家讨论
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hjhwfw
2004-08-23
打赏
举报
回复
接分,各位
ncucf
2004-08-20
打赏
举报
回复
呵呵,我对vc里面的多线程操作还算清楚,c#中的,还没真正接触啊!
hjhwfw
2004-08-20
打赏
举报
回复
ncucf(ncu晨风)
能具体说一下吗?
vzxq
2004-08-19
打赏
举报
回复
用lock吧
hjhwfw
2004-08-19
打赏
举报
回复
lock(this)应该将该对象实例的所有方法都锁定吧?
还是只锁定threadToRun方法
zhangzgl
2004-08-19
打赏
举报
回复
如果希望不产生问题可以使用线程同步,线程同步是一种确保不同线程协调其对共享资源(如:控制台)的访问方式,实现同步,在C#中用lock提供,锁机制确保同一时间只有一个线程可以访问某个方法或代码.
如:
class Test
{
static void Main()
{
Test objTest=new Test();
Thread newThread=new Thread(new ThreadStart(objTest.threadToRun));
newThread.Start();
tbjTest.threadToRun();
}
void threadToRun()
{
lock(this)
for(int i=0;i<100;i++)
{
Console.WriteLine("线程数为:{0}",i)
}
}
}
hjhwfw
2004-08-19
打赏
举报
回复
MSDN每个类都会有这样一段:
线程安全
此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。
希望哪个高手给解释一下?
我不懂电脑
2004-08-19
打赏
举报
回复
如果操作了共享数据如类变量容易出问题,需要提供互斥操作才能保证线程安全
hjhwfw
2004-08-19
打赏
举报
回复
MSDN每个类都会有这样一段:
线程安全
此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。
希望哪个高手给解释一下?
hjhwfw
2004-08-19
打赏
举报
回复
楼上能不能说清楚些
lxcc
2004-08-19
打赏
举报
回复
公共方法
//看你是啥方法,比如有独享访问资源的时候,是不行的!
jietuan
2004-08-19
打赏
举报
回复
锁定方法,某个进程访问时。
lglesias
2004-08-19
打赏
举报
回复
hehe
学习中
顶
hjhwfw
2004-08-19
打赏
举报
回复
上面只是一个简单的计算,
如果函数中有数据访问并且时间很长(20秒),不知会不会有问题
hjhwfw
2004-08-19
打赏
举报
回复
private int i;
public void test()
{
i+=100;
}
lanyahu
2004-08-19
打赏
举报
回复
帮你up
Proyang
2004-08-19
打赏
举报
回复
有代码么?
canoe_eyes
2004-08-19
打赏
举报
回复
理论上说,不会的.具体要看你的公共方法的影响.
hivak47
2004-08-19
打赏
举报
回复
设置好的话,不会出问题的.
Samen168
2004-08-19
打赏
举报
回复
要看具体的实现方式
加载更多回复(4)
java六大必须理解的
问题
文档
java六大必须理解的
问题
、内容比较详细、写的比较具体
两个
线程
同时
访问
一个
对象
的
两个
普通同步
方法
(synchronized)
示例代码 public class TestMain implements Runnable { //格式化 static SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public void run() { //让
线程
Thread-0...
多个
线程
同时操作
一个
对象
的实际案例(Java多
线程
)
大家好,今天我们分享一下
一个
对象
被多个
线程
使用的实际案例 首先,我们要知道,使用Thrad 继承方式创建的多
线程
有单继承的局限性 即: 在Java中
一个
类只能使用extends继承
一个
父类. 代码案例: package Demo01; //我们在这里写
一个
抢票的例子 //我们敲得就是
一个
多个
线程
同时操作
一个
对象
的实例 public class TestThread04 implements Runnable { private int tickNums = 10; //有10张票
java多
线程
(
对象
和变量的并发
访问
)
在现实开发中,我们写的
线程
肯定
会
有不同的实例在执行,此时就可能
会
出现
”非
线程
安全
问题
”,非
线程
安全就是:多个
线程
对同
一个
对象
中的实例变量进行并发
访问
时候,有可能A和B
线程
同时读取到数据,先后进行更改,此时,该变量就不是我们期望的数据,也就是通常所说的”脏数据”实例变量非
线程
安全 需要注意的是,
方法
中的变量是不存在非
线程
安全
问题
的,这是因为
方法
内部的变量都是私有的。 如果多个
线程
共同
访问
了
一个
对象
中的
多
线程
调用单例的
方法
,
会
不
会
有安全
问题
答案有: 多个
线程
,同时调用单例的同
一个
方法
会
出现
什么现象? 阻塞? 并
不
会
!!! 属性是安全的? 也不是!!! 总结就是: 多
线程
调用单例的同
一个
方法
线程
不
会
阻塞,数据也不安全 //单例 public enum Singleton { INSTANCE; private int age = 0; private Singleton() { System.out.println("这里是初始化
方法
"); } public void whate
C#
111,119
社区成员
642,538
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章