在JAVA中Scanner的阻塞是什么意思?
Scanner的阻塞,就是程序运行到那一句,停在那里,等待你输入,等你输入完了,回车,程序继续往下走。
java中的阻塞式方法是什么意思,比如InputStream中的read()方法。
java中的阻塞式方法是指在程序调用改方法时,必须等待输入数据可用或者检测到输入结束或者抛出异常,否则程序会一直停留在该语句上,不会执行下面的语句。
java中很多方法都是属于阻塞式方法,比如InputStream中的read()方法和多线程中sleep()方法等。
java中的阻塞什么意思
程序运行到一行不运行了,等待有条件触发,如:
1:io阻塞,datagramesocket.recive();
serversocket.recive();
2:线程阻塞,1:synch…(obj)等待obj解锁;
2:wait(),等待其他线程的notify().
Java中阻塞和等待的区别
定义解释
阻塞:当一个线程试图获取一个内部的对象锁(非java.util.concurrent库中的锁),而该锁被其他线程持有,则该线程进入阻塞状态。
等待:当一个线程等待另一个线程通知调度器一个条件时,该线程进入等待状态。例如调用:Object.wait()、Thread.join()以及等待Lock或Condition。
可以通过代码与JConsole来验证
验证阻塞
public static void main(String[] args) throws Exception {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
// 等待主线程获取锁
Thread.sleep(10000);
// 请求locker对象的内部锁
synchronized (locker) {
System.out.println(“Get locker”);
}
} catch (InterruptedException e) {
// TODO: handle exception
}
}
}, “Blocked Thread”);
thread.start();
// 请求locker内部对象锁
synchronized (locker) {
// 始终持有locker对象的内部锁
while (true) {
;;
}
}
}