java中的多线程

[复制链接]
查看11 | 回复1 | 2008-4-6 22:06:33 | 显示全部楼层 |阅读模式
你执行的是h.set(i); 也就是说是h.wait()而不是p.wait()所以线程会继续。如果想让p停止有很多方法可以实现,你搞清楚了对象的关系应该很容易写出来的。
回复

使用道具 举报

千问 | 2008-4-6 22:06:33 | 显示全部楼层
package javaapplication8;public class Main { public static void main(String args[]){ H h=new H(); P p=new P(h); C c=new C(h); p.start(); c.start(); } } class H{ private int s; public synchronizedvoid set(int v){ s=v;try{wait();} catch(InterruptedException e){} }public synchronized int get(){ notify();return s;}}class P extends Thread{ private H h; public P(H h){ this.h=h; } public synchronized void run(){ for(int i=1;i<=4;i++){
h.set(i);System.out.println("产生的新数据是"+i);} } } class C extends Thread{ private H h; public C(H h){ this.h=h; } public synchronized void run(){ for(int i=1;i<=4;i++){ int v=h.get(); System.out.println("读到的数据是:"+v); } } } 这是我修改后的程序,我在Thread里面加了同步,同时去掉了当按钮的BOOLEAN类型变量WE.避免了2个线程在PRINT语句时出现调换情况!至于细节方面的原因还是等高手来解决吧: )PS:我的多线程只学了大概!细节方面知道的不多.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行