Skip to Main Content

Java Programming

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Timeout for "new BufferedReader (new InputStreamReader (System.in));"

806346Oct 22 2010 — edited Oct 23 2010
BufferedReader in = new BufferedReader (new InputStreamReader (System.in));
String message = in.readLine();  
The above code waits infinitely until the user enter the data from the command line and presses enter key.

The following code can provide a timeout to the above waiting (it works fine).

But is there a SIMPLER WAY to provide timeout for above waiting, something like setSoTimeout(int milliseconds) method in DatagramSocket, Socket and ServerSocket classes*?*


http://www.coderanch.com/t/232213/threads/java/implement-timeout-threads
=>
import java.util.Timer;   
import java.util.TimerTask;   
import java.io.*;  
 
public class test{   

private String str = "";   

	TimerTask task = new TimerTask(){   
    	    public void run(){   
		if( str.equals("") ){   
			System.out.println( "you input nothing. exit..." );   
			System.exit( 0 );   
		}
    	    }
	};


	public void getInput() throws Exception{   
		Timer timer = new Timer();   
		timer.schedule( task, 10*1000 );   
  
		System.out.println( "Input a string within 10 seconds: " );   
		BufferedReader in = new BufferedReader(   
			new InputStreamReader( System.in ) );   
		str = in.readLine();   
  
		timer.cancel();   
		System.out.println( "you have entered: "+ str );    
	}    

  
	public static void main( String[] args ){   
		try{   
			(new test()).getInput();
		}catch( Exception e ){   
			System.out.println( e );   
		} 
		System.out.println( "main exit..." );   
	} 
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 20 2010
Added on Oct 22 2010
1 comment
14,076 views