ZKX's LAB

java中这个多线程怎么不共享资源啊? java线程池能共享资源吗

2021-04-09知识4

java中这个多线程怎么不共享资源啊? i是run方法里的局部变量,可以共享的是类的成员变量,你定义一个成员变量,在for循环里引用,就不会有问题了

下面说法正确的是( ) A) JAVA中的线程不可以共享代码 B) JAVA中的线程不可以共享数据 C

创建一个java程序:两个或两个以上的线程需要访问共享资源 试一试生产消费者问题吧.一个栈空间装WOTOU然后开启两个线程同时消费和生产.满20次就停止public class Test{public static void main(String[]args){SyncStack ss=new SyncStack();Producer p=new Producer(ss);Consumer c=new Consumer(ss);Thread t=new Thread(p);Thread tt=new Thread(c);t.start();tt.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];public synchronized void push(WoTou wt){if(index=arrWT.length){try{this.wait();}catch(InterruptedException e){e.printStackTrace();}}this.notify();arrWT[index]=wt;index+;}public synchronized WoTou pop(){if(index=0){try{this.wait();}catch(InterruptedException e){e.printStackTrace();}}this.notify();index-;return arrWT[index];}}class Producer implements Runnable{SyncStack ss=null;Producer(SyncStack ss){this.ss=ss;}public void run(){for(int i=1;i;i+){WoTou wt=new WoTou(i);ss.push(wt);System.out.println(\"生产了:\"+wt);try{。

#java线程池能共享资源吗

随机阅读

qrcode
访问手机版