BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
.......
可以进行键盘输入,
现在问题是程序运行到br.readLine();会阻塞。
如果要求从键盘输入,如果1分钟内不从键盘输入,则继续执行下面的代码,程序不继续阻塞在br.readLine()。
该如何进行?
String str=br.readLine();
.......
可以进行键盘输入,
现在问题是程序运行到br.readLine();会阻塞。
如果要求从键盘输入,如果1分钟内不从键盘输入,则继续执行下面的代码,程序不继续阻塞在br.readLine()。
该如何进行?
解决方案 »
- 臭狗屎 1.6 哥卸载了 换1.5
- 文本编辑器添加新建与保存上卡住了.求救有代码
- 初学者,遇到一个小麻烦,请各位帮帮我。。。。。。
- 关于ResultSet的矛盾 1、2、3……
- 求接触mvc的人给小妹解决哈这个小问题啊!
- java中的一个问题?
- decimalformat的默认格式
- java初学提问,送分
- 关于Image和BufferedImage的区别
- 有没有类似vb中unload me 的语句,可以unload某一个Frame,而不仅仅是setVisible(false) ?
- 谁知道如何,将JAVA文件,加到自己建的包里,并调用啊?
- 急救!为什么getText(),getPassword()方法不能识别呢?输入的帐号和密码程序不响应呢?
br.readLine();
这个好像不能interrupt吧?
这个想法不错,那么如何将回车发到System.in流中去呢?
"\r"如何发送到System.in中?
你是说用robot对象?
private Scanner cin = new Scanner(System.in); public String str = null; public static void main(String[] args) {
Test t = new Test();
System.out.println("start");
t.start();
long t1 = System.currentTimeMillis();
while (t.str == null && System.currentTimeMillis() - t1 < 10000) { }
if (t.str != null) {
System.out.println("you pressed:" + t.str);
}
try {
t.interrupt();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("end"); } public void run() {
str = cin.next();
}
}还差一点的就是要强制结束线程,我本想在interrupt()的地方把线程t给kill掉,可是好像没有可以kill的函数,用destroy可以编译过,可是运行时居然NoSuchMethodException,如果能够把线程t给kill掉的话,就应该可以了.
谢谢,使用interrupt不安全,不能确定这个线程会发生什么
另外,为什么大家都喜欢用jdk1.5呢?我觉得1.4.x挺好的,不像过早用1.5,呵呵
long lTime=System.currentTimeMillis();
boolean bTimeOverFlag=false;
String str=null; do
{
while (System.in.available() < 2)
{
Thread.sleep(50);
if (System.currentTimeMillis() - lTime
>= GLOBAL_TIME)
{
bTimeOverFlag = true;
break;
}
}
if (!bTimeOverFlag)
{
str = bufferedReaderIn.readLine();
........
}
}
while (!bTimeOverFlag);