目录
-
线程和进程的区别?
进程是正在运行程序的实例,进程中包含了线程,每个线程执行不同的任务
不同的进程使用不同的内存空间,在当前进程下的所有线程可以共享内存空间
线程更轻量,线程上下文切换成本比进程切换更低
-
并发与并行有什么区别?
并发是指多个任务由单个cpu轮流执行;
并行是多个任务由多个cpu同时执行。
-
创建线程的四种方式?
共有4种,继承Thread类,实现runnable接口,实现Callable接口,线程池创建线程;
-
runnable和Callable有什么区别?
Callable接口call方法有返回值,是一个泛型,和Future、FutureTask配合可以获取异步执行的结果;
runnable的run方法没有返回值,callable的call方法有返回值;
Callable接口支持返回执行的结果,需要调用FutureTask.get()得到,此方法会阻塞主进程继续往下执行;
Callable接口的call()方法允许抛出异常,Runnable接口的run()方法分异常只能在内部消化不往上抛。