本帖最后由 王德升 于 2012-6-22 13:25 编辑
public class ProducerConsumer {
public static void main(String[] args) {
SyncStack ss = new SyncStack();
Producer p = new Producer(ss);
Consumer c = new Consumer(ss);
new Thread(p).start();
new Thread(p).start();
new Thread(p).start();
new Thread(c).start();
}
}
class WoTou {
int id;
WoTou(int id) {
this.id = id;
}
public String toString() {
return "WoTou : " + id;
}
}
class SyncStack {
int index = 0;
WoTou[] arrWT = new WoTou[6];//1.这里为啥要这么定义?
public synchronized void push(WoTou wt) {
while(index == arrWT.length) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notifyAll();
arrWT[index] = wt;
index ++;
}
public synchronized WoTou pop() {
while(index == 0) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notifyAll();
index--;// 2.这里为什么要减减呢?
return arrWT[index];
}
}
class Producer implements Runnable {
SyncStack ss = null;//3.为什么要定义成null?
Producer(SyncStack ss) {
this.ss = ss;
}
public void run() {
for(int i=0; i<20; i++) {
WoTou wt = new WoTou(i);
ss.push(wt);
System.out.println("生产了:" + wt);
try {
Thread.sleep((int)(Math.random() * 200));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Consumer implements Runnable {
SyncStack ss = null;
Consumer(SyncStack ss) {
this.ss = ss;
}
public void run() {
for(int i=0; i<20; i++) {
WoTou wt = ss.pop();
System.out.println("消费了: " + wt);
try {
Thread.sleep((int)(Math.random() * 1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//三个小问题谢谢了。
public class Test{
public static void main(String args[]) {
int[][] m = {{1,2,3},{2,3,4},{4,5,6}};//1.这里定义的事什么数组?
int[][] n = {{3,4,5},{5,6,7}};
int[][] mn = new int[3][];
for(int i = 0; i<m.length;i++) {
mn = new int[n[0].length];
}
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < n[0].length; j++) {
for (int k = 0; k < n.length; k++) {
mn[j] += m[k] * n[k][j];//2 这个根本看不懂。
}
}
}
for(int i = 0; i<mn.length;i++){
for(int j =0;j<mn.length;j++){
System.out.print(mn[j]);
if(j<mn.length-1) System.out.print(",");
}
System.out.println();
}
}
}
// 两个问题。
|