请问synchronized是什么?

binny 2003-09-16 01:03:45
/**
* Allocates a new string that contains the sequence of characters
* currently contained in the string buffer argument. The contents of
* the string buffer are copied; subsequent modification of the string
* buffer does not affect the newly created string.
*
* @param buffer a <code>StringBuffer</code>.
* @throws NullPointerException If <code>buffer</code> is
* <code>null</code>.
*/
public String (StringBuffer buffer) {
synchronized(buffer) {
buffer.setShared();
this.value = buffer.getValue();
this.offset = 0;
this.count = buffer.length();
}
}

这里面的synchronized是什么?是谁的方法,它能实现什么效果?
...全文
57 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrj0329789 2003-09-16
  • 打赏
  • 举报
回复
在多线程环境中,可能会出现多个线程同时访问一个变量的时候,其结果导致数据破坏或不一致。这种情况下,应让一个线程执行完任务,再让另一个线程执行。同步过程能做到这一点。
所以就要用到关键词synchronized。将其加到方法或函数前,该方法或函数称为同步方法或函数,一般用到多线程中。
明白之后结帖给分。
whyxx 2003-09-16
  • 打赏
  • 举报
回复
保证下面这段代码只能在同一时刻只能被一个线程访问
buffer.setShared();
this.value = buffer.getValue();
this.offset = 0;
this.count = buffer.length();
AprilChen 2003-09-16
  • 打赏
  • 举报
回复
保证参数buffer在某一时刻只能被一个线程访问!也就是同步!
Yanbin_Q 2003-09-16
  • 打赏
  • 举报
回复
这是一个线程同步块
保证线程同步有两种方式,一种是方法同步,一种是块同步
几个线程要调用同步方法或同步块时,当第一个线程 调用了该同步块的之前就给块加上对象锁,声明其他线程在它未释放时不能访问,处于一个等待序列中,结束调用就会释放该锁,队列中的一个线程又可再调用,以此类推

这样做可以防止多个线程同时修改同一段内存,文件得到错误结果或者对文件的损坏。
xutaiqing520 2003-09-16
  • 打赏
  • 举报
回复
同步
wangyanqiu 2003-09-16
  • 打赏
  • 举报
回复


同步!
网络咖啡 2003-09-16
  • 打赏
  • 举报
回复
其实主要是同步

简直是废话
zez 2003-09-16
  • 打赏
  • 举报
回复
同步

------------------------------------------------------
我们还年轻牛奶会有的奶牛也会有的
可天天在 csdn 混这些会有吗 ??
dmhorse 2003-09-16
  • 打赏
  • 举报
回复
multithread时保证只有你这个thread在调用的此对像,即保证安全

62,614

社区成员

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

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