public static void main(String[] args) {
TestDeadLock td1 = new TestDeadLock();
TestDeadLock td2 = new TestDeadLock();
td1.flag = 1;
td2.flag = 0;
Thread t1 = new Thread(td1);
Thread t2 = new Thread(td2);
t1.start();
t2.start();
}
}
public int flag = 1; 这个是作为静态常量给main方法的flag赋值? 那为什么赋值为1?作者: 皮卫凯 时间: 2012-9-13 23:32 本帖最后由 皮卫凯 于 2012-9-13 23:39 编辑
public class TestDeadLock implements Runnable {
public int flag = 1; //1、这是定义一个标记,之后的if语句要用到。
static Object o1 = new Object(); //2、这是创建一个object对象,毕老师说的上帝。
static Object o2 = new Object(); //3、这也是个object对象。
public int flag = 1; //作用是什么-->
作用是定义个标记值,来判断而进入不同的同步代码块中去去执行。
static Object o1 = new Object(); //作用是什么
这个的作用是创建一个上帝对象,这就是上帝对象可以作为同步代码块的对象。这是为了保证对象的唯一性。
也可以是别的什么对象,这个就方便,不用再去创建一个类。
static Object o2 = new Object(); //作用是什么
作用和上边是一样。
public int flag = 1; 这个是作为静态常量给main方法的flag赋值? 那为什么赋值为1?
就是在main方法中进行给flag进行赋值,这样就在不同的线程去拿到不同锁,
赋值为1,就相当于是true 赋值为0,就相当于是false。
其实这就是和那个boolean值是一个原理。作者: 武庆东 时间: 2012-9-13 23:46
public class TestDeadLock implements Runnable {
public int flag = 1; //作用是什么
//解答:定义的标志位,可以根据这条信息,执行Run()方法中的信息,见后面解释
static Object o1 = new Object(); //作用是什么
//解答:定义的静态内成员变量,类的属性,可以根据设置同步代码块限制条件
static Object o2 = new Object(); //作用是什么
//解答,同上条
public void run() {
System.out.println("flag=" + flag);