class A{
synchronized void method(){}
}main方法类{
start一些线程;
A a;
a.method();//!!!问题1:当cpu运行主线程到这里的时候,必须把a.method运//行完才有可能运行其他线程,对不对?
//!!!问题2:这个作用是起到该方法顺利运行不受多线程干扰导致混乱,对不//对?
//!!!问题3:这个运用synchronized的机制为什么叫线程同步?我觉得应该//叫防止多线程同步才对吧
}
synchronized void method(){}
}main方法类{
start一些线程;
A a;
a.method();//!!!问题1:当cpu运行主线程到这里的时候,必须把a.method运//行完才有可能运行其他线程,对不对?
//!!!问题2:这个作用是起到该方法顺利运行不受多线程干扰导致混乱,对不//对?
//!!!问题3:这个运用synchronized的机制为什么叫线程同步?我觉得应该//叫防止多线程同步才对吧
}
2)这个,这个,也可以这么说吧.应该是避免多个线程同时调用a.method(),什么干扰不干扰的就得看method里面到底执行了什么.
3)这个问题很难回答.
线程同步是相对于线程并发而言的
这些概念性的东西书上都有
2.对
3.和你一起学习。
对于第二个问题: 当你的一个线程执行method()方法时,这个方法只能被这个线程访问,其他线程无权访问(只有等这个线程访问后才能访问),这样做就是为了保证method方法中的数据保持一致性。如果不用sychroized限制,当一个线程访问的时候,其他线程可以会造成数据篡改。 所以这个作用是起到该方法顺利运行不受多线程干扰导致混乱。
对于第三个问题,这个叫做线程同步,是指代数据的同步。
1)程序仍然可以继续运行
2)用synchronized声明的方法表示执行到该方法时获取当前对象(本例中是a)的锁,其它该对象用synchronized声明的方法就阻塞了只有拿到当前对象的锁后才可以继续执行。