多线程相关问题

Posted Java学习基地Java毕设定制

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关问题相关的知识,希望对你有一定的参考价值。

什么是线程?

线程是操作系统能够进行运算调度的最小单位,它包含在进程之中,是进程中的实际运作单位



线程和进程之间的区别:

一个进程包含多个线程,线程是进程的子集,每条线程执行不同的任务,不同的进程使用的是不同的内存空间,而所有线程共享一片内存空间.



实现线程的方式有什么:

1.继承Thread类,重写run方法.

2.实现Runable接口,重写run方法,一般来说都说通过实现Runable接口来创建线程的,因为Java语言只能继承一个类,所以实现Runable方法就更加灵活.

3.通过实现Callable接口和Future Task创建线程.

4.通过线程池创建线程.



线程池的创建方式有4中分别是:

1.newCachedThreadPool:这是一个可缓存的线程池.

2.newFixedThreadPool:创建一个定长的连接池,可以控制线程的最大并发度,超出的线程会在队列中等待.

3.newScheduledThreadPool:创建一个定长的连接池,支持定时和周期性人物执行

4.newSingleThreadPool:创建一个单线程的连接池,保证所有的线程按照指定的顺序执行.



线程中run方法和start方法有什么区别:

Thread.start方法是启动该线程

Thread.run方法是当该线程得到CPU的资源的时候,有JVM调度执行run方法.

线程的生命周期

1.新建状态:

2.就绪状态:

3.执行状态:

4.阻塞状态:

5.死亡状态:



对线程的管理方法有哪些?

1.sleep方法:线程睡眠:使用后会使得线程进入阻塞状态.

2.线程让步yield:和sleep差不多,但是使用后会让线程进入就绪状态,而不是阻塞状态.

3.线程合并join:把几个线程合并成一个线程,通常的使用场景是某一线程必须在某一线程执行完以后才能执行.

4.设置线程的优先级:Thread提供了设置优先级的方法setPriority和getPriority来设置和得到优先级.

5.守护线程:一般用的较少,像jvm垃圾回收和内存管理就是守护线程

6.正确的停止线程.



线程同步的方法:

1.使用同步方法

2.同步代码代

3.同步锁:Lock

4.使用特殊的变量:volitile.这个变量就是要告诉jvm虚拟机,这个变量可能会被其他的线程修改,如果要使用的时候,不是拿到寄存器中的值,而是要重新计算.



什么是死锁:

比如说:一个线程A中有资源A,一个线程B中有资源B,A的下一步要使用资源B,而B的下一步要使用资源A,所有他们就会互相等待资源的释放来使用,这样就会造成死锁的问题.

处理死锁的方法有什么:

1.忽略他们

2.检测死锁并恢复

3.资源进行重新分配



volitile和synchronize的区别:

volitile的实质就是告诉JVM该变量在寄存器中的值是不确定的,当时用这个值得时候不能从寄存器中拿,而需要从主存中拿,而synchronize的作用是锁住该变量,只有当前的线程可以使用,其他使用该变量的线程进入阻塞状态.



sleep和wait的区别:

sleep是使线程进入等待状态,没有释放CPU的资源,没有释放锁.

wait是使线程进入等待池中,释放CPU的资源,释放锁.

sleep设置睡眠时间

wait需要唤醒,notify()方法唤醒.


以上是关于多线程相关问题的主要内容,如果未能解决你的问题,请参考以下文章

复习多线程相关知识

多线程相关问题

多线程:线程相关类

多线程状态相关问题

多线程相关面试题

多线程相关面试题