设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序


以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

public class ThreadTest1

{

private int j;

public static void main(String args[]){

ThreadTest1 tt=newThreadTest1();

Inc inc=tt.new Inc();

Dec dec=tt.new Dec();

for(inti=0;i<2;i++){

Thread t=newThread(inc);

t.start();

t=new Thread(dec);

t.start();

}

}

private synchronized void inc(){

j++;

System.out.println(Thread.currentThread().getName()+”-inc:”+j);

}

private synchronized void dec(){

j–;

System.out.println(Thread.currentThread().getName()+”-dec:”+j);

}

class Inc implements Runnable{

public void run(){

for(inti=0;i<100;i++){

inc();

}

}

}

class Dec implements Runnable{

public void run(){

for(inti=0;i<100;i++){

dec();

}

}

}

}

 

———-随手再写的一个————-

class A

{

JManger j =new JManager();

main()

{

new A().call();

}

 

void call

{

for(int i=0;i<2;i++)

{

new Thread(

newRunnable(){ public void run(){while(true){j.accumulate()}}}

).start();

new Thread(newRunnable(){ public void run(){while(true){j.sub()}}}).start();

}

}

}

 

class JManager

{

private j = 0;

 

public synchronized voidsubtract()

{

j–

}

public synchronized voidaccumulate()

{

j++;

}

 

}

免责声明:该资源版权归原作者所有,本站只是负责搜集和整理,本站不承担任何技术及版权问题。在本站下载该资源仅提供学习参考和研究,不得用于商业用途,否则一切后果请用户自负。请在下载后在24小时内删除,一切关于该资源商业行为与学士资源网无关。本站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。如有侵权、不妥之处,请联系站长以便及时删除,敬请谅解!侵权/投稿邮箱:zhuanyexueshi@163.com
学士资源网 » 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序

发表评论

学士资源网为大家提供最优质的资源集合

联系学士 资源Q群
嘿,我来帮您!