进程和线程的关系,线程休眠的方法、Sleep和 wait方法有什么区别。同步与异步的区别、 为什么wait(),notify(),notifyAll()等方法都定义在Object类中、 因为这些方法的调用是依赖于锁对象的,而同步代码块的锁对象是任意锁 而Object代表任意的对象,所以,定义在这里 线程的生命周期: 新建:创建线程对象 就绪:有执行资格,没有执行权。 运行:有执行资格,有执行权 阻塞:由于一些操作让线程处于该状态,没有执行资格,没有执行权 而另一些操作却可以把他激活,激活后处于就绪状态 死亡:线程对象变成垃圾,等待回收 进程:是正在运行的程序,是系统进行资源分配和调用的独立单位 每一个进程都有它自己的内存空间和系统资源 线程:一个时间段执行多个任务 是进程中的单个顺序控制流,是一条执行路径 一个进程如果执行一条执行路径,则称为单线程程序 如果执行多条执行路径,则称为多线程程序。 线程依赖进程存在 多线程不是提高程序执行速度,而是提高应用程序使用率 程序的执行其实就是在抢CPU资源,CPU的执行权 同步的原理:就是将部分操作功能数据的代码进行加锁。 wait和sleep区别:分析这两个方法:从执行权和锁上来分析: wait:可以指定时间也可以不指定时间。不指定时间, 只能由对应的notify或notifyAll来唤醒。 sleep:必须指定时间,时间到自动从冻结状态转成运行状态(临时阻塞状态)。 wait:线程会释放执行权,而且线程会释放锁。 Sleep:线程会释放执行权,但不是不释放锁。 说说对线程池的理解、run和start什么区别? 程序启动一个新线程成本比较高,因为涉及到要与操作系统进行交互, 而使用线程池就可以很好的提高性能,尤其是当程序要创建大量 生存期很短的线程是,更应使用 线程池里的每一个线程代码结束后,并不会死亡,而是再次 回到线程池中成为空闲状态,等待下一个对象来使用
|