// This code example is from the following source:
//
// Book Title: Programming with Objects, A Comparative Presentation
// of Object-Oriented Programming with C++ and Java
//
// Chapter: Chapter 18 Multithreaded Object-Oriented Programming
//
// Section: Section 18.4 Thread Interference In Java
//
// The links to the rest of the code in this book are at
//
// http://programming-with-objects.com/pwocode.html
//
// For further information regarding the book, please visit
//
// http://programming-with-objects.com
//
//UnsynchedFileIO.java
/////////////////////////// class DataFile //////////////////////////
class DataFile { //(A)
public DataFile() { //(B1)
try {
FileIO.writeOneString( "Hello", "hello.dat" ); //(B2)
} catch( FileIOException e ) {}
}
void fileIO() { //(C1)
try {
String str = FileIO.readOneString( "hello.dat" ); //(C2)
FileIO.writeOneString( str , "hello.dat" ); //(C3)
} catch( FileIOException e ) {}
}
}
/////////////////////// class ThreadedFileIO ////////////////////////
class ThreadedFileIO extends Thread { //(D)
DataFile df; //(E)
ThreadedFileIO( String threadName, DataFile d ) { //(F)
df = d;
setName( threadName );
start();
}
public void run( ) { //(G)
int i = 0;
while ( i++ < 4 ) {
try {
df.fileIO();
String str = FileIO.readOneString( "hello.dat" );
System.out.println( getName() + ": "
+ "hello.dat contains: " + str );
sleep( 5 );
} catch( InterruptedException e ) {}
catch( FileIOException e ) {}
}
}
}
/////////////////////// class UnsynchedFileIO ///////////////////////
public class UnsynchedFileIO { //(H)
public static void main( String[] args ) {
DataFile dd = new DataFile(); //(I)
new ThreadedFileIO( "t0", dd ); //(J1)
new ThreadedFileIO( "t1", dd ); //(J2)
new ThreadedFileIO( "t2", dd ); //(J3)
new ThreadedFileIO( "t3", dd ); //(J4)
new ThreadedFileIO( "t4", dd ); //(J5)
}
}