关于多线程的两个问题

RUBY_uu 2006-01-26 08:42:45
1。当多个线程共享数据时,如何保持数据的一致性,也就是说如何防止一个线程对共享数据仅仅进行了部分操作就退出的情况出现?
2。如果我把下面这段代码放到多线程中:
public void push (char c)
{
data[idx] = c;
idx++;
}
如果一个线程刚执行完push方法中的data[idx] = c;语句,CPU便切换到了另外一个线程上执行push方法;第二个线程将覆盖掉第一个线程执行的data[idx] = c;语句的结果,我要如何做才能防止这种情况的发生?

谢谢各位大侠!!
...全文
152 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
timeblink 2006-02-17
  • 打赏
  • 举报
回复
学习
CAT1111 2006-01-26
  • 打赏
  • 举报
回复
在方法前加上synchronized即把这个方法写成
public synchronized void push (char c)
{
data[idx] = c;
idx++;
}
这样可以保证这个方法在同一时刻只被一个对象访问。
725137 2006-01-26
  • 打赏
  • 举报
回复
加一个synchronized

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧