帮看一段简单的代码 本帖最后由 yaojianquansb 于 2010-07-29 00:15:03 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.util.LinkedList;public class Test extends Thread{ static LinkedList<String> myList = new LinkedList<String>(); static boolean flag=true; public Test(){} public Test(String threadName){ super(threadName); } public static void add(){ myList.add("apple1"); myList.add("apple2"); flag=false; } public void run(){ synchronized(myList){ try{ while(myList.size()==0){ if(flag) {System.out.println("Warnning:"+getName()+" It's empty!"); myList.wait();} else break; } if(myList.size()>0) {String s = myList.removeLast(); System.out.println(getName()+":"+s);} else System.out.println("INFO:"+getName()+" quit."); }catch(Exception e){ e.printStackTrace(); } } } public static void main(String args[]){ Test t1 = new Test("t1"); Test t2 = new Test46("t2"); Test46 t3 = new Test("t3"); t1.start(); t2.start(); t3.start(); try{ Thread.sleep(3000); }catch(Exception e){ e.getMessage(); } synchronized(myList){ add(); myList.notifyAll(); } }} 这是简单的生产者与消费者问题, 只不过没有生产者,是不是可以当myList.size()==0时就退出,因为此时没有生产者,那么对于消费者来说wait()就没什么意义,LZ看下是不是可以这样:while(myList.size()==0){ System.out.println("Warnning:"+getName()+" It's empty!"); // myList.wait();break; } 士兵突击 麻烦看一下这个,http://topic.csdn.net/u/20100729/15/232335a5-4632-4501-b899-a249750dd22f.html?10290,我昨天想问这个的,后来自己写了个简单点的,悟性太低,这个明白了,那个还是不会。 JDK 7 使用ireport打印字间距小 set.remove()后set.size()疑惑 正则表达式要记住吗? 关于javamail的问题,大家帮忙看看! 有关Instanceof的问题,请指教! 如何修改table列名 为什么用rmiregistry不能启动命名注册器? 有没有java的 像msdn一样的帮助文档 请问JDBC连接中如何判断一个表是否存在呀?你开个价 有没有防止JAVA程序被反编译的技术? 关于TableViewer 的一个问题 请教ChartDirector保存图片到文件!
import java.util.LinkedList;
public class Test extends Thread{
static LinkedList<String> myList = new LinkedList<String>();
static boolean flag=true;
public Test(){}
public Test(String threadName){
super(threadName);
}
public static void add(){
myList.add("apple1");
myList.add("apple2");
flag=false;
}
public void run(){
synchronized(myList){
try{
while(myList.size()==0){
if(flag)
{System.out.println("Warnning:"+getName()+" It's empty!");
myList.wait();}
else
break;
}
if(myList.size()>0)
{String s = myList.removeLast();
System.out.println(getName()+":"+s);}
else
System.out.println("INFO:"+getName()+" quit.");
}catch(Exception e){
e.printStackTrace();
}
}
}
public static void main(String args[]){
Test t1 = new Test("t1");
Test t2 = new Test46("t2");
Test46 t3 = new Test("t3");
t1.start();
t2.start();
t3.start();
try{
Thread.sleep(3000);
}catch(Exception e){
e.getMessage();
}
synchronized(myList){
add();
myList.notifyAll();
}
}
}
是不是可以当myList.size()==0时就退出,因为此时没有生产者,那么对于消费者来说wait()就没什么意义,
LZ看下是不是可以这样:
while(myList.size()==0){
System.out.println("Warnning:"+getName()+" It's empty!");
// myList.wait();
break;
}