Java线程相关

  分类:技术   评论:无  浏览: 598次

线程

  

进程/线程

  线程是进程的子集,一个进程可以有多个线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间,没个线程都拥有单独的栈内存用来存储本地的数据。

死锁/活锁

死锁   死锁:线程A或者线程B需要过独木桥(使用该进程),而线程C还没有走完(进程还在占用),于是三方僵死;
  也可以是没有线程C的情况下,线程A和线程B互不礼让僵死。 线程A和线程B都认为自己优先级最高应该使用该进程。

活锁   活锁:线程A和线程B都需要过桥(都需要使用进程),而都礼让不走(拿到的系统优先级相同,都认为不是自己优先级高),就这么僵持下去。

线程优先级

  每一个线程都是有优先级的,一般来说,高优先级的线程运行时会具有优先权,但这依赖于线程调度的实现,这个实现是和操作系统相关的。
  我们可以自定义线程的优先级,但是这也不一定就能保证高优先级的线程运行在低优先级的线程前面。
  线程优先级是一个int变量(从1到10),1-代表最低优先级,10-代表最高优先级。

线程饿死

死锁   线程饿死:这是个独木桥(单进程),桥上只能走一个人,线程B来到时线程A在桥上,线程B等待;而此时比线程B年龄小的线程C来了,线程B让线程C先走(线程A走完后系统把进程分给了线程C),线程C上桥后,D又来了,B又让D先行(C走完后系统把进程分给了D)以此类推线程B一直是等待状态.

线程阻塞

活锁   线程阻塞

线程池

  创建线程要花费昂贵的资源和时间,如果任务来了再创建线程那么响应的时间就会变长,而且一个进程能创建的线程数有限;为了避免这些问题,再程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。

点击这里给我发消息
嘿!有什么可以帮助你吗?