本帖最后由 奋斗2013 于 2013-4-6 15:47 编辑
今天学习了线程同步方法:其中有一个方法是同步块减负:代码如下:
public class SynchronizedBlockDemo implements Runnable {
private int number = 0;// 创建一个int类型变量进行测试
@Override
public void run() {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(100);// 线程休眠0.1秒增加出错几率
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (this) {
// 输出当前线程的名称和number的值,每次循环之后number的值都会加一
System.out.println(Thread.currentThread().getName() + ": "
+ number++);
}
}
}
public static void main(String[] args) {
SynchronizedBlockDemo run = new SynchronizedBlockDemo(); // 获得SynchronizedBlockDemo
// 对象
Thread thread1 = new Thread(run);// 创建线程1
Thread thread2 = new Thread(run);// 创建线程2
thread1.start();// 运行线程1
thread2.start();// 运行线程2
}
}
其中这段代码
synchronized (this) {
// 输出当前线程的名称和number的值,每次循环之后number的值都会加一
System.out.println(Thread.currentThread().getName() + ": "
+ number++);
}
我只知道他是线程同步的,不知道他实现同步的原理。他是怎样保证线程同步的呢?请懂的讲解一下。
|