您的位置:首页 > 其它

线程学习之多个线程对共享资源做不同操作

2011-09-18 11:35 267 查看
下面的代码是有2个线程,一个线程对共享变量加1,另一个线程对共享变量减1的实现



package com.lyj;

/**
* 多个线程操作同一个对象。
* 执行代码不同,将要执行的代码封装在一个共享变量中,然后传递给各自的Runnable, 在run方法操作不同的执行的代码
*/
public class MultiThreadShareDataDemo {

/*
* 有2个线程,一个线程对共享变量加1,另一个线程对共享变量减1
*/
public static void main(String[] args) {
ShareData sd = new ShareData();

new Thread(new MyRunnable1(sd)).start();
new Thread(new MyRunnable2(sd)).start();
}
}

class MyRunnable1 implements Runnable {
private ShareData sd;

public MyRunnable1(ShareData sd) {
this.sd = sd;
}

@Override
public void run() {
sd.increate();
}
}

class MyRunnable2 implements Runnable {
private ShareData sd;

public MyRunnable2(ShareData sd) {
this.sd = sd;
}

@Override
public void run() {
sd.decreate();
}
}

// 共享对象
class ShareData {
private int count = 100;

public synchronized void increate() {
count++;
}

public synchronized void decreate() {
count--;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: