关于多线程同步问题

wlcy1988 2007-06-06 09:33:03
class threadMeng {
public static void main(String[] args){
threadmm mt=new threadmm();

// mt.start();
new Thread(mt).start();//这样可以多个一样的线程
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
//while(true)

System.out.println("main:"+Thread.currentThread().getName());
}
}
class threadmm implements Runnable{
Object obj=new Object();
int i=1;// 如果 i 在run 方法里定义的话就不能同步
int j=10;
boolean b=true;
public void run(){
while(b){
synchronized(obj){
if(i<j){
try{
Thread.sleep(10);
}
catch(Exception e){
}
System.out.println("threadmm:"+
Thread.currentThread().getName()+"---"+i);
i++;
}
}
if(i>=j){
b=false;
}
}
}
}

int i=1;// 如果 i 在run 方法里定义的话就不能同步
这是为何呢?
...全文
286 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
IntelSupport 2007-07-11
  • 打赏
  • 举报
回复
变量分为线程私有变量和线程共享变量。

私有变量每个线程都有一个copy, 不需要也可能被同步。

线程共享变量才需要被同步。

应该是上面的原因。

aero_boy 2007-06-07
  • 打赏
  • 举报
回复
不能同步是什么意思

568

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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