这个是ThreadEmergency和ThreadJoin:
public class EmergencyThread implements Runnable{
//一定要记得继承Runnable接口
public void run(){
for(int i=1;i<6;i++){
try{
Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
}
System.out.println("紧急情况:"+i+"号车出发!");
}
}
}
public class JoinThread {
/**
* @param args
*/
public static void main(String[] args) {
Thread thread = new Thread(new EmergencyThread());
//实例化Thread线程的方法,需要传入参数
thread.start();
//启动要调用start()方法
for(int i = 1;i<6;i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.out.println("正常情况:"+i+"号车出发!");
try {
thread.join();
//强行加入:join()
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
这个是ThreadLock:
public class DeadLock {
/**
* @param args
*/
private static final Object o1 = new Object();
private static final Object o2 = new Object();
private class Run1 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
String threadName = Thread.currentThread().getName();
synchronized(o1){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print(threadName+"准备进入O2!");
synchronized(o2){
System.out.println(threadName+"已经进入了O2!");
}
}
}
}
private class Run2 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
String threadName = Thread.currentThread().getName();
synchronized(o2){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(threadName+"准备进入O1!");
synchronized(o1){
System.out.println(threadName+"已经进入了O2!");
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread thread1 = new Thread(new DeadLock().new Run1(),"线程-O1-");
Thread thread2 = new Thread(new DeadLock().new Run2(),"线程-O2-");
thread1.start();
thread2.start();
}
}