⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sharedcell.java

📁 this file shows look like galaxy
💻 JAVA
字号:
 // Show multiple threads modifying shared object.
 public class SharedCell 
 {
	 public static void main( String args[] )
	 {
		 HoldIntegerUnsynchronized h = new HoldIntegerUnsynchronized();
		 ProduceInteger p = new ProduceInteger( h );
		 ConsumeInteger c = new ConsumeInteger( h );

		 p.start();
		 c.start();
	 }
 }

 // Definition of threaded class ProduceInteger
 public class ProduceInteger extends Thread 
 {
	 private HoldIntegerUnsynchronized pHold;

	 public ProduceInteger( HoldIntegerUnsynchronized h )
	 {
		 super( "ProduceInteger" );
		 pHold = h;
	 }

	 public void run()
	 {
		 for ( int count = 1; count <= 10; count++ ) 
		 {
			 // sleep for a random interval
			 try 
			 {
				 Thread.sleep( (int) ( Math.random() * 3000 ) );
			 }
			 catch( InterruptedException e ) 
			 {
				 System.err.println( e.toString() );
			 }

			 pHold.setSharedInt( count );
		 }

		 System.err.println( getName() + " finished producing values" + "\nTerminating " + getName() );
	 }
 }

 // Definition of threaded class ConsumeInteger
 public class ConsumeInteger extends Thread 
 {
	 private HoldIntegerUnsynchronized cHold;

	 public ConsumeInteger( HoldIntegerUnsynchronized h )
	 {
		 super( "ConsumeInteger" );
		 cHold = h;
	 }

	 public void run()
	 {
		 int val, sum = 0;

		 do 
		 {
			 // sleep for a random interval
			 try 
			 {
				 Thread.sleep( (int) ( Math.random() * 3000 ) );
			 }
			 catch( InterruptedException e ) 
			 {
				 System.err.println( e.toString() );
			 }

			 val = cHold.getSharedInt();
			 sum += val;
		 } 
		 while ( val != 10 );

		 System.err.println( getName() + " retrieved values totaling: " + sum + "\nTerminating " + getName() );
	 }
 }

 // Definition of class HoldIntegerUnsynchronized
 public class HoldIntegerUnsynchronized 
 {
	 private int sharedInt = -1;

	 public void setSharedInt( int val )
	 {
		 System.err.println( Thread.currentThread().getName() + " setting sharedInt to " + val );
		 sharedInt = val;
	 }

	 public int getSharedInt()
	 {
		 System.err.println( Thread.currentThread().getName() + " retrieving sharedInt value " + sharedInt );
		 return sharedInt;
	 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -