public class homework2 {
public static void main(String[] args) {
t t = new t();
Thread thread = new Thread(t);
thread.setName("t1");
Thread thread1 = new Thread(t);
thread1.setName("t2");
thread.start();
thread1.start();
}
}
class t implements Runnable{//涉及多个线程共享资源,所以使用runnable方式
private int money=10000;
@Override
public void run() {
while (true){
synchronized (this){//线程执行到这里线程争夺this这把锁,谁执行线程,同时间只执行一个线程
if(money<1000){//没有争夺到this锁就发生阻塞,等待下次争夺
System.out.println("余额不足");
break;//执行完之后就释放this对象锁,属于非公平锁
}
money-=1000;
System.out.println(Thread.currentThread().getName()+"取出了1000余额"+money);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}}
}
}
java锁的代码
最新推荐文章于 2024-04-30 17:28:01 发布