黑马程序员技术交流社区
标题:
线程问题,为什么运行一次就卡死那里
[打印本页]
作者:
秦岩
时间:
2012-4-8 23:28
标题:
线程问题,为什么运行一次就卡死那里
/*
* 为什么运行一次后就卡死。
*/
package cn.copy;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
public class DateBaseDemo {
public static void main(String[] args) {
DateBase db = new DateBase();
new DBA(db).start();
new Developer(db).start();
}
}
class DateBase {
String name;
String sex;
boolean Update;
ReentrantLock lock = new ReentrantLock();
Condition c1 = lock.newCondition();
Condition c2 = lock.newCondition();
}
class DBA extends Thread {
private DateBase db;
private int times;
public DBA(DateBase db) {
this.db = db;
}
public void run() {
while (true) {
db.lock.lock();
if (db.Update == true)
try {
db.c1.await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (times++ % 2 == 0) {
db.name = "秦岩";
db.sex = "男";
} else {
db.name = "晁喆";
db.sex = "女";
}
db.Update = true;
db.c2.signal();
db.lock.unlock();
}
}
}
class Developer extends Thread {
private DateBase db;
public Developer(DateBase db) {
this.db = db;
}
public void run() {
db.lock.lock();
if (db.Update == false)
try {
db.c2.await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(db.name + ", " + db.sex);
db.Update = false;
db.c1.signal();
db.lock.unlock();
}
}
复制代码
哪里错了吗? 我实在是找不到啊~~~ 帮帮忙~~
作者:
申振华
时间:
2012-4-8 23:44
改为实现Runnable接口。
作者:
秦岩
时间:
2012-4-9 07:34
申振华 发表于 2012-4-8 23:44
改为实现Runnable接口。
为什么?
作者:
郑苑东
时间:
2012-4-9 07:51
class Developer extends Thread {
private DateBase db;
public Developer(DateBase db) {
this.db = db;
}
public void run() {这里少了一个while循环,,
while(true){
db.lock.lock();
if (db.Update == false)
try {
db.c2.await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(db.name + ", " + db.sex);
db.Update = false;
db.c1.signal();
} db.lock.unlock();
}
}
作者:
pray
时间:
2014-4-26 06:51
很好!!(此回复虽然仅有两个字,却深刻地表达了回复人的深深情感,可谓言简意赅,一字千金,字字扣人心弦!再加上以感叹号收尾,点睛之笔,妙笔生花,意境之深远,令人回味无穷!)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2