目录
1.什么是进程、什么是线程,他们之间是什么关系?
1.1.进程是什么?
1.2.线程是什么?
1.3.两者之间的关系
- 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程(主线程)
- 资源分配给进程,同一进程的所有线程共享该进程的所有资源
- 线程在执行的过程中,需要协作同步。不同的进程的线程间需要利用消息通信的办法实现同步
- CPU是分给线程,即真正在CPU上运行的是线程
- 、线程是指进程内的一个执行单元,也就是进程内的可调度实体
2.Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?
创建一个线程有4种方式:
- 继承Thread类 继承的扩展性不强,java只支持单继承,如果一个类继承Thread类就不能继承其他类了
- 实现Runnable接口
- 实现Callable接口,重写call方法(有返回值)
- 通过线程池
如何区分线程?
在一个系统中有很多线程,每个线程都会打印日志,我想区分是哪个线程打印的怎么办?
thread.setName(“设置一个线程名称”); 这是一种规范,在创建线程完成后,都需要设置名称。
可以使用synchronized关键字修饰同步方法
3.Callable与Runnable区别:
Callable | Runnable | |
返回值 | 执行结果 | 无 |
异常 | 抛出异常 | 不可,必须在内部解决 |
方法 | call()方法 | run()方法 |
效率 | 高 | 低 |
4.守护线程是什么?用什么方法守护线程?
守护线程是运行在后台的一种特殊进程。
它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件
在Java中垃圾回收线程就是特殊的守护线程
5.什么是串行、并发、并行?
串行的特点:前一个任务没搞定,下一个任务就只能等着。
并行是指程序在某一时刻处理事件的能力
并行的关键是你有同时处理多个任务的能力
并发是指程程序在某一时间段处理事件的能力
并发的关键是你有处理多个任务的能力,不一定要同时
最关键的点就是:是否是『同时』。