新手入门,被多线程虐的不行,完全不明觉厉。。求大神指导下。。。 多线程java 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 仅供参考package test003;public class Dxc { public static void main(String[] args) { queuesum q=new queuesum(); Sum ss=new Sum(q); dq dd=new dq(q); new Thread(ss).start(); new Thread(dd).start(); }}class Sum implements Runnable{ queuesum q; public Sum(queuesum q){ this.q=q; } public void run(){ while(true){ q.calsum(); } }}class dq implements Runnable{ queuesum q; public dq(queuesum q){ this.q=q; } public void run(){ while(true){ q.getsum(); } }}class queuesum{ int sum; boolean flag=false; public synchronized void calsum(){ if(!flag){ sum=0; for(int i=1;i<=20;i++){ sum+=i*(i+1); try { Thread.sleep(100); } catch (Exception ee) { ee.printStackTrace(); } } System.out.println("calsum OK!"); flag=true; notify(); } try { wait(); } catch(Exception ee){ ee.printStackTrace(); } } public synchronized void getsum(){ if(!flag){ try { wait(); } catch(Exception ee){ ee.printStackTrace(); } } flag=false; notify(); System.out.println("sum="+sum); }} 我已经解决了 还是谢谢你。。 不用那么麻烦加入wait()的 JAVA中怎么样往一个字符串的左端添加空格 Java初始化的方法有几种? 如何截取视频的第一帧图片? RandomAccessFile用 writeUTF() 写文件的时候为什么第一个字符会是乱码? Scanner出错 一个时间验证的问题? JCreator问题 这个程序跌代器用与不用的区别在哪里? java里面怎样找到局域网内所有机器的ip地址! 如何在一个类中调用另一个类? java 程序cpu占用率 内存使用 初学者请教 — 关于重写eqeasl()方法的一些问题
package test003;
public class Dxc {
public static void main(String[] args) {
queuesum q=new queuesum();
Sum ss=new Sum(q);
dq dd=new dq(q);
new Thread(ss).start();
new Thread(dd).start();
}
}class Sum implements Runnable{
queuesum q;
public Sum(queuesum q){
this.q=q;
}
public void run(){
while(true){
q.calsum();
}
}
}
class dq implements Runnable{
queuesum q;
public dq(queuesum q){
this.q=q;
}
public void run(){
while(true){
q.getsum();
}
}
}class queuesum{
int sum;
boolean flag=false;
public synchronized void calsum(){
if(!flag){
sum=0;
for(int i=1;i<=20;i++){
sum+=i*(i+1);
try {
Thread.sleep(100);
} catch (Exception ee) {
ee.printStackTrace();
}
}
System.out.println("calsum OK!");
flag=true;
notify();
}
try
{
wait();
}
catch(Exception ee){
ee.printStackTrace();
}
}
public synchronized void getsum(){
if(!flag){
try
{
wait();
}
catch(Exception ee){
ee.printStackTrace();
}
}
flag=false;
notify();
System.out.println("sum="+sum);
}
}
我已经解决了 还是谢谢你。。 不用那么麻烦加入wait()的