runnable 和callable有什么区别
1. Runnable 接口run方法无返回值;Callable接口call方法有返回值,是个泛 型,和Future、FutureTask配合可以用来获取异步执行的结果 2. Runnable接口run方法只能抛出运行时异常,且无法捕获处理;Callable接口 call方法允许抛出异常,可以获取异常信息 3. Callalbe接口支持返回执行结果,需要调用FutureTask.get()得到,此方法会 阻塞主进程的继续往下执行,如果不调用不会阻塞。
线程同步以及线程调度相关的方法
wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁; sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方 法要处理 InterruptedException 异常; notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能 确切的唤醒某一 个等待状态的线程,而是由 JVM 确定唤醒哪个线程,而且与 优先级无关; notityAll():唤醒所有处于等待状态的线程,该方法并不是将对象的锁给所有 线程,而是让它 们竞争,只有获得锁的线程才能进入就绪状态