Java线程重复执行以及操作共享变量的代码示例

网友投稿 205 2023-07-25


Java线程重复执行以及操作共享变量的代码示例

1.题目:主线程执行10次,子线程执行10次,此过程重复50次

代码:

package com.Thread.test;

/*

* function:主线程执行10次,子线程执行10次,

* 此过程重复50次

*/

public class ThreadProblem {

public ThreadProblem() {

final Business bus = new Business();

new Thread(new Runnable() {

public void run() {

for(int j=0;j<50;j++) {

bus.sub(j);

}

}

}).start();

for(int j=0;j<50;j++) {

bus.main(j);

}

}

class Business {

private boolean tag=true;

public synchronized void sub(int num) {

if(!tag) {

try {

this.wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

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

{

System.out.println("sub thread "+i+",loop "+num+".");

}

tag=false;

notify();

}

public synchronized void main(int num) {

if(tag) {

try {

this.wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

for(int i=0;i<10;i++) {

System.out.println("main thread "+i+",loop "+num+".http://");

}

tag=true;

notify();

}

}

public static void main(String[] args) {

ThreadProblem problem = new ThreadProblem();

}

}

2.四个线程,共享一个变量j,其中两个线程对j加1,两个线程对j减1。

代码如下:

package com.Thread.test;

//实现4个线程,两个线程加1,两个线程减1

public class Demo1 {

private static int j=0;

private A a = new A();

//构造函数

public Demo1() {

System.out.println("j的初始值为:"+j);

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

new Thread(new Runnable(){

public void run() {

for(int k=0;k<5;k++){

a.add1();

}

}

}).start();

new Thread(new Runnable(){

public void run() {

for(int k=0;k<5;k++)

{

a.delete1();

}

}

}).start();

}

}

class A {

public synchronized void add1() {

j++;

System.out.println(Thread.currentThread().getName()+"对j加1,目前j="+Demo1.j);

}

public synchronized void delete1() {

j--;

System.out.println(Thread.currentThread().getName()+"对j减1,目前j="+Demo1.j);

}

}

//用于测试的主函数

public static void main(String[] args) {

Demo1 demo = new Demo1();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:API管理平台:提升效率与安全的利器
下一篇:Java观察者设计模式(Observable和Observer)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~