一.什么是多线程?

1.多线程的概念?

什么是先线程什么又是进程?

1.什么是进程:进程是计算机中关于某数据集合的一次活动,是系统进行资源分配的基本单位,是计算机结构的基础.在早期面向进程的计算机设计结构中,进程是程序的最基本的执行实体.在当代面向线程设计的计算机结构中,进程是线程的容器,程序是指令,数据及其组织形式的集合,线程是程序的实体.总之进程可以理解为一个可以独立运行的程序单位,进程是由一个或多个线程组成的,每一个线程就是进程中的一条执行路径.

2.为什么要使用多线程或者说使用多线程有什么好处?

1.在一个程序的执行过程中有许多耗时的操作,如数据库的读写,磁盘的IO操作等,都是非常耗时的,如果使用单线程就必须等待这些操作执行完才能去执行其他的操作,使用多线程可以将耗时操作放在后台继续执行的同时,执行其他操作.提高效率,准确的说是提高cpu的使用率,对于单核cpu来说他并不是每个时刻都在使用,比如进行IO操作时,IO操作是比较费时的,在读取磁盘的时候,cpu是处于等待状态,并没有执行任何操作,这个时候我们就可以用cpu等待的这段时间,让他去执行别的操作,从而提高效率.

3.使用多线程有什么缺点?

1.使用多线程很消耗系统资源,因为多线程需要开辟内存,而且线程切换也是需要时间的.

2.线程的终止会对程序有影响

3.多个线程之间存在共享数据,容易出现线程死锁的情况

4.多线程在高并发的场景中的作用?

 高并发是指在程序运行中,短时间内遇到大量的用户请求,执行大量的对资源的请求或者对数据库的操作,高并发处理不好的话,不仅降低了用户的体验,还有可能造成宕机,严重的甚至发生oom,系统停止工作,解决高并发的问题需要从多方面进行解决如硬件,网络,系统架构,开发语言的选取,数据结构的应用,算法优化,数据库优化,而多线程在高并发的情况下的作用就是充分利用计算机资源,使计算机在每一时刻都能达到最大的利用率.

5.线程的创建和常用方法?

1.线程的创建

线程的创建主要有俩种方法,一.是继承Thread类,重写run方法,另一种就是实现Runable接口,重写run方法.线程的启动调用start方法.其他的还有通过匿名内部类的方法创建,实现callable接口

在java中无论使用哪种方式创建线程,本质上都是创建Thread类,另外callable是有返回值的,Thread只能单继承

2.常用方法

currentThread();获取当前线程

isAlive();判断线程是否存活

join();强制运行线程其他线程无法执行

sleep();休眠不会释放锁

interrupt();线程中断

setDaemon(true);线程后台执行

getPriority();获取线程优先级

setPriotiy();设置线程优先级

yield();暂停当前线程让当前线程处于就绪状态不会释放锁

wait();等待会释放锁

notify();唤醒线程让线程重新处于就绪状态

notifyAll();唤醒所有线程