关于java多线程的一点疑问

sunboyqq23 2010-12-31 06:12:06
在网上看到的所有关于java多线程的例子都是用一个实现Runnable接口,然后用这个类实例化一个对象,然后用这个对象作为参数传递给多个Thread对象。实现了Runnable接口的这个类里面写有wait(),notify()。
如果我这么写, 用一个类继承Thread,然后实例化这个类的多个对象,这些对象之间是不是不能相互wait和notify?
...全文
101 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pywepe 2011-01-01
  • 打赏
  • 举报
回复
package pcenshao.w_n.demo;

public class Test {

public static void main(String[] args) throws InterruptedException {
final T t1 = new T();
t1.setName("t1");
t1.start();

T t2 = new T(){
@Override
public void run() {
while(true){
synchronized (t1) {
t1.notify(); //唤醒在监视器上t1等待第一个线程
p("t1.nofity()");
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
t2.setName("t2");
t2.start();

}

static class T extends Thread{

@Override
public void run() {
while(true){
p("running");
synchronized (this) {
try {
p("waiting for notify ...");
this.wait();
p("notified");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

}

static void p(String s){
System.out.println("thread:" + Thread.currentThread().getName() +"," + s);
}

}
sunboyqq23 2011-01-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 unbachone 的回复:]

额,我想错了,我以为你说的是构造不同的实现Runnable接口的类的对象来传给Thread的构造方法使用wait()和notify(),糊涂了。
对于你说的,实例多个Thread类的子类的对象来使用wait()和notify()方法,跟实现Runnable接口是没有区别的。
至于例子,你把生产者和消费者问题实现Runnable接口的例子改成继承Thread类就可以了。
[/Quote]怎么改啊,求解
unbachone 2010-12-31
  • 打赏
  • 举报
回复
额,我想错了,我以为你说的是构造不同的实现Runnable接口的类的对象来传给Thread的构造方法使用wait()和notify(),糊涂了。
对于你说的,实例多个Thread类的子类的对象来使用wait()和notify()方法,跟实现Runnable接口是没有区别的。
至于例子,你把生产者和消费者问题实现Runnable接口的例子改成继承Thread类就可以了。
步入狼途 2010-12-31
  • 打赏
  • 举报
回复
具体情况具体对待,没有永远的法则……
sunboyqq23 2010-12-31
  • 打赏
  • 举报
回复
求一个通过继承Thread,而且使用wait和notify的例子
unbachone 2010-12-31
  • 打赏
  • 举报
回复
不行的,各个对象之间是相互独立的,想要用自身的wait()和notify()方法来控制其他实例是不行的。不管是实现Runnable接口还是继承Thread类都不行,这两种方法没有本质上的区别。况且wait()和notify()也跟Thread无关,而是Object的方法。
sun0322 2010-12-31
  • 打赏
  • 举报
回复
过年了,好好玩玩吧!
zzt369880281 2010-12-31
  • 打赏
  • 举报
回复
呵呵,看看高手们怎么说
goodsun00 2010-12-31
  • 打赏
  • 举报
回复
用java 写写生产者 消费者问题,哲学家问题,你会有自己的理解 的
i李小武 2010-12-31
  • 打赏
  • 举报
回复
这要看你怎么设计了,如果没有特殊的设计,这多个实例的wait和notify是相互独立的。
wait和notify是object的方法,他们是从object继承的。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧