同一个
Runnable
,使用全局变量。
第一种:将共享数据封装到一个对象中,把这个共享数据所在的对象传递给不同的
Runnable
第二种:将这些
Runnable
对象作为某一个类的内部类,共享的数据作为外部类的成员变量,对共享数据 的操作分配给外部类的方法来完成,以此实现对操作共享数据的互斥和通信,作为内部类的Runnable
来 操作外部类的方法,实现对数据的操作
class ShareData{ private int x =0 ;public synchronized voidaddx (){ x ++ ;System . out . println ( "x++ : " + x );}public synchronized voidsubx (){ x -- ;System . out . println ( "x-- : " + x );}}public class ThreadsVisitData {public static ShareData share = new ShareData ();public static void main ( String [] args ) {//final ShareData share = new ShareData();new Thread ( new Runnable () {public void run () {for ( int i =0 ; i < 100 ; i ++ ){ share .addx ();}}}). start ();new Thread ( new Runnable (){ public void run () {for ( int i =0 ; i < 100 ; i ++ ){ share .subx ();}}}). start ()