Java面试题之线程

1. 进程和线程的区别

  1. 进程是资源分配的基本单位;线程是任务调度执行的基本单位;
  2. 进程的创建和销毁消耗的资源都比线程要多;
  3. 多个进程之间的内存资源是独立的;在一个进程中多个线程之间的内存资源是共享的;

一个进程中包含多个线程,一个线程中包含多个协程。在单线程中有多个协程并发执行,实际上还是串行执行的。

2. 并行和并发的区别

并行是在同一时刻内多条指令在多个处理器中执行,从微观和宏观上看都是并行的;

并发是在同一时刻内只能有一条指令执行,从宏观上是并行的,从微观上是串行的,只是把时间分成若干段,使每个进程之间快速交替执行。

3. Java 中怎么创建线程

  1. 继承 Thread 类,重写 run 方法(run中逻辑就是线程要执行的工作,只有当子类实例化,调用start方法时,才可以真正创建线程)
  2. 实现 Runnable 接口,重写 run 方法(创建了Runnable实例,将runnable实例作为参数传给线程,将线程要干的工作 和 线程本身 分开,使用Runnable来专门表示“线程要完成的工作”,这种方法的好处是,降低了耦合性,如果以后要修改代码,改动相对较少,只需要将修改后的Runnable传给其他的实体就可以了)
  3. 使用匿名内部类实现(创建Thread子类的方式或实现Runnable接口的方法)
  4. 实现 Callable 接口,并结合 Future 实现(很少用)
  5. 通过线程池创建线程(创建 Runnable 的实现类,重写 run 方法,然后创建一个拥有固定线程数的线程池,最后通过 ExecutorService 对象的 execute 方法传入线程对象)

4. 常见操作线程的方法

  1. 启动线程:start
  2. 中断线程:isInterrupted(线程中断,本质上是让run方法尽快结束,而不是run执行一半,强制结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快到锅里来呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值