介绍java多线程例子
class ThreadDemo {
public static void main(String[] args) {
TestThread t = new TestThread();
new Thread(t).start();
try{Thread.sleep(10);}catch(Exception e) {}
t.flag = true;
new Thread(t).start();
}
}
class TestThread implements Runnable {
boolean flag = false;
String A=new String("");
String B=new String("");
// String A="";
// String B="";
public void run() {
System.out.println(A==B);
if(flag) {
while(true) {
synchronized(A) {
try{Thread.sleep(100);}catch(Exception e) {} synchronized(B) {}
}
System.out.println("AA...running...");
}
} else {
while(true) {
synchronized(B) {
try{Thread.sleep(100);}catch(Exception e) {} synchronized(A) {}
}
System.out.println("BB...running...");
}
}
}
}
这里启动了两个线程,两个线程都循环想要得到A对象和B对象的锁旗标。
在试验这个例子的时候,还遇到了一个有意思的问题:刚开始我用的A和B对象是这么写的A="";B="";结果死活实验不出来死锁问题,这倒是挺奇怪的。结果最后发现原来这时候A和B引用了同一个对象,这是更java中对字符串常量的处理有关系,A="";时,java会在
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库java多线程例子(10)在线全文阅读。
相关推荐: