3、Java多线程

1、并行和并发有什么区别?

  • 并行在操作系统中是指,一组程序按独立异步的速度执行,不等于时间上的重叠(同一个时刻发生)
  • 并发是指:在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行)

区别:

  1. 并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务
  2. 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行

2、线程和进程的区别

  1. 定义:进程是指执行中的一段程序,线程是单个进程中执行的每个任务
  2. 一个线程只能属于一个进程,但是一个进程可以拥有多个线程。多线程处理就是允许一个进程中在同一时刻执行多个任务

3、创建线程的方式

  • 继承Thread类创建线程
  • 实现Runnable接口创建线程

4、sleep和wait区别(重点)

  1. sleep是线程中的方法,但是wait是Object中的方法
  2. sleep方法是不会释放 lock,但是wait会释放,而且会加入到等待队列中
  3. sleep方法不依赖于同步器synchronized,但是wait需要依赖于synchronized
  4. sleep不需要被唤醒(休眠之后推出阻塞),但是wait需要(不指定时间需要被别人中断)

5、Java线程的生命周期

线程是一个动态执行的过程,从产生到死亡共有5种状态

新建 – 就绪 – 运行 – 堵塞 – 死亡

新建(new Thread)

当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)

    例如:Thread  t1=new Thread();

就绪(runnable)yield是进入就绪状态

线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例如:t1.start();

运行(running)

线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。

死亡(dead)

当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。

  • 自然终止:正常运行run()方法后终止

  • 异常终止:调用stop()方法让一个线程终止运行

堵塞(blocked)

  • 由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态。

    • 正在睡眠:用sleep(long t) 方法可使线程进入睡眠方式。一个睡眠着的线程在指定的时间过去可进入就绪状态。

    • 正在等待:调用wait()方法。(调用motify()方法回到就绪状态)

    • 被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)

6、在多线程编程里,wait方法的调用方式实怎样的?

wait方法是线程通信的方法之一,必须用在synchronized方法或者synchronized代码块中,否则会抛出异常。所以wait方法必须使用上锁的对象来调用,从而持有该对象的锁进入线程等待状态,直到使用该上锁的对象调用notify或者notifyAll方法来唤醒之前进入等待的线程,已释放持有的锁

7、Error 和 Exception 区别是什么?

  • Error 类型的错误通常为虚拟机相关错误,如系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,JAVA 应用程序也不应对这类错误进行捕获,一旦这类错误发生,通常应用程序会被终止,仅靠应用程序本身无法恢复;
  • Exception 类的错误是可以在应用程序中进行捕获并处理的,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行。

8、常见的RuntimeException有哪些?

  • ClassCastException(类转换异常)
  • IndexOutOfBoundsExcepton(数组越界)
  • NullPointerException(空指针)
  • 还有IO操作的BufferOverflowException异常
  • ArrayStoreException(数据存储异常,操作数组时类型不一致)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值