1.什么是线程,什么是进程?
进程是执行的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程,线程又叫作轻量级进程。
2.创建线程的几种方法?你最喜欢哪一种?为啥?
继承Thread类、实现Runnable接口
实现Runnable接口更受程序员欢迎,因为它不需要继承Thread类。
3.概述的解释下线程的几种状态
就绪(Runnable):线程准备运行,但不一定就能开始执行;
运行(Running):线程执行;
等待中(Waiting):线程处于阻塞状态,等待外部处理结束;
睡眠中(Sleeping):线程被强制睡眠;
I/O阻塞(Blocked on I/O):等待I/O操作完成;
同步阻塞(Blocked on Sychronization):等待获取锁;
死亡(Dead):线程完成了执行。
4.sychronized关键字
在Java语言中,每一个对象有一个锁。线程可以使用Sychronized关键字来获取对象上的锁。
5.死锁(DeadLock)
两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。(用不用我给您讲一个例子?)
6.如何确保N个进程访问N个资源同时又不导致死锁?
使用多线程的时候,一种非常简单的避免死锁的方法就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。