上代码
package com.enfang;
/**
* 一种简单的加锁方式,定义一个属性 boolean lock = false;
* 当方法m1()执行的前,让lock = true;执行后将lock = false;
* 同时在需要加锁的那个方法如下run(),先判断lock 是否等于false;
* 当lock等于false的时候,才执行,否则只能等待m1()执行后才去执行run();
*
* @author Administrator
*
*/
public class SimpleLock extends Thread{
boolean lock = false;
public void m1() throws Exception{
lock = true;
System.out.println("i am m1!");
Thread.sleep(10000);
lock = false;
}
@Override
public void run(){
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
}
if(lock==true){
System.out.println("execute m1 now....");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
System.out.println("i am m2!");
}else {
System.out.println(1111);
System.out.println("i am m2!");
}
}
public static void main(String[] args) throws Exception {
SimpleLock sl = new SimpleLock();
Thread t = new Thread(sl);
t.start();
sl.m1();
}
}
在多线程中,这并不是一个好方法,只是编程中的一个使用的小技巧,这里使用线程主要是模拟两个客户端同时调用m1()和run()这种情况,实际使用中不需要加线程。刚入门还望多多包含。