今天真是没事干啊,今年哥大三 ,在北京来实习,写了一天测试用例,晚上实在没事干,看看原来操作系统的把
锁机制其实理解后很有用的,就是我们java 中的同步,在数据库中也有同样的应用。
在开发过程中,单例和多例的时候要考虑到用户的并发操作如果是单例,那就有可能造成多个用户对同一个资源进行操作,十分有可能早成混乱,而加锁就是为了避免多个进程同时操作同一资源。
现在讲讲代码
private static int flag1=0; //这个是1要求进入临界区
private static int flag2=0; //这个标志2要求临界区
private static int turn=1; // 这代表是谁进入的一个权利。
public static void f1() throws InterruptedException{
flag1=1;
turn=2;//谦让精神 给2进入
while(flag2==1&&turn==2){}//2在里面的话 哥就等把 ,无限循环啊
//进入临界区
System.out.println("哥进入了临界区,老2");
//结束了临界区的访问
flag1=0;//我不要求进入了,老2想进就进把。
}
public static void f2() throws InterruptedException{
flag2=1;
turn=1;
while(flag1==1&&turn==1){}
//进入临界区
System.out.println("di进入了临界区,老大");
//结束了临界区的访问
flag2=0;
}
锁机制其实理解后很有用的,就是我们java 中的同步,在数据库中也有同样的应用。
在开发过程中,单例和多例的时候要考虑到用户的并发操作如果是单例,那就有可能造成多个用户对同一个资源进行操作,十分有可能早成混乱,而加锁就是为了避免多个进程同时操作同一资源。
现在讲讲代码
private static int flag1=0; //这个是1要求进入临界区
private static int flag2=0; //这个标志2要求临界区
private static int turn=1; // 这代表是谁进入的一个权利。
public static void f1() throws InterruptedException{
flag1=1;
turn=2;//谦让精神 给2进入
while(flag2==1&&turn==2){}//2在里面的话 哥就等把 ,无限循环啊
//进入临界区
System.out.println("哥进入了临界区,老2");
//结束了临界区的访问
flag1=0;//我不要求进入了,老2想进就进把。
}
public static void f2() throws InterruptedException{
flag2=1;
turn=1;
while(flag1==1&&turn==1){}
//进入临界区
System.out.println("di进入了临界区,老大");
//结束了临界区的访问
flag2=0;
}