package com.gyj.student;
/**
- 多线程共享数据的方式1调用同一对象
- @author guoyajie
*/
public class Test7 {
public static void main(String[] args) {
ShareData1 date1 = new ShareData1();
new Thread(date1).start();
new Thread(date1).start();
}
}
class ShareData1 implements Runnable{
int j = 0;
private int count = 100;
public synchronized void increment(){
j++;
}
public synchronized void decrement(){
j--;
}
@Override
public void run() {
while(true){
count --;
}
}
}
=============================================================
package com.gyj.student;
import com.gyj.student.Test6.MyThreadScopeDate;
/**
- 多线程共享数据的方式2
- @author guoyajie
*/
public class Test7 {
public static void main(String[] args) {
final ShareData1 date1 = new ShareData1();
MyRunable1 my1 = new MyRunable1(date1);
MyRunable1 my2 = new MyRunable1(date1);
new Thread(my1).start();
new Thread(my2).start();
new Thread(new Runnable() {
@Override
public void run() {
date1.decrement();
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
date1.increment();
}
}).start();
}
}
class MyRunable1 implements Runnable{
private ShareData1 data1;
public MyRunable1(ShareData1 data ){
this.data1 = data;
}
@Override
public void run() {
data1.decrement();
};
}
class MyRunable2 implements Runnable{
private ShareData1 data1;
public MyRunable2(ShareData1 data ){
this.data1 = data;
}
@Override
public void run() {
data1.increment();
};
}
class ShareData1{
int j = 0;
private int count = 100;
public synchronized void increment(){
j++;
}
public synchronized void decrement(){
j--;
}
}
package com.gyj.student;
import com.gyj.student.Test6.MyThreadScopeDate;
/**
- 多线程共享数据的方式
- @author guoyajie
*/
public class Test7 {
public static void main(String[] args) {
final ShareData1 date1 = new ShareData1();
MyRunable1 my1 = new MyRunable1(date1);
MyRunable1 my2 = new MyRunable1(date1);
new Thread(my1).start();
new Thread(my2).start();
new Thread(new Runnable() {
@Override
public void run() {
date1.decrement();
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
date1.increment();
}
}).start();
}
}
class MyRunable1 implements Runnable{
private ShareData1 data1;
public MyRunable1(ShareData1 data ){
this.data1 = data;
}
@Override
public void run() {
data1.decrement();
};
}
class MyRunable2 implements Runnable{
private ShareData1 data1;
public MyRunable2(ShareData1 data ){
this.data1 = data;
}
@Override
public void run() {
data1.increment();
};
}
class ShareData1{
int j = 0;
private int count = 100;
public synchronized void increment(){
j++;
}
public synchronized void decrement(){
j--;
}
}