1,死锁程序
package thread;
//死锁
public class DeadLockTest {
public static void main(String[] args) {
Test t1 = new Test(true);
Test t2 = new Test(false);
new Thread(t1).start();
new Thread(t2).start();
}
}
class Test implements Runnable{
private boolean flag;
public Test(boolean flag) {
this.flag = flag;
}
@Override
public void run() {
if(flag){
synchronized (MyLock.lock1){
System.out.println("if...lock1");
synchronized(MyLock.lock2){
System.out.println("if...lock2");
}
}
}else{
synchronized (MyLock.lock2){
System.out.println("else...lock2");
synchronized(MyLock.lock1){
System.out.println("else...lock1");
}
}
}
}
}
class MyLock{
public static Object lock1 = new Object();
public static Object lock2 = new Object();
}
2,两人到银行存钱,一次存一百,存3次:
package thread;
public class Deposit {
public static void main(String[] args) {
Bank bank = new Bank();
Thread man1 = new Thread(bank);
Thread man2 = new Thread(bank);
man1.start();
man2.start();
}
}
class Bank implements Runnable{
private int capital = 0;
public int getCapital() {
return capital;
}
@Override
public void run() {
for(int i=0;i<3;i++){
capital+=100;
System.out.println(capital);
}
}
}