线程
线程是进程中的一个实体,进程的一个执行路径
是CPU调度和分派执行的基本单位
线程本身是不会独立存在的
系统不会为线程分配内存,每个线程有自己的栈资源,用于存储该线程的局部变量,其它线程是无权访问的。
每一个线程都是进程的一个执行路径,所以线程之间可以共享所属进程的资源
多线程
解决多个任务同时执行的需求,合理利用CPU的资源。
多线程的运行是根据CPU的切换来完成的,如何切换由CPU来完成,因此多线程运行具有不确定性。
线程池
在未引入线程池之前,我们使用线程时就去创建一个线程,这样实现起来非常方便,但是就会有一个问题:
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?
在Java中可以通过线程池来达到这样的效果。
基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。
1.创建线程的两种方式
①继承自Thread类,重写run()方法
classDemoThreadextendsThread{ @Overridepublicvoidrun(){ super.run(); }}DemoThread t = newDemoThread();t.start();
继承Thread类,覆盖run()方法。
创建线程对象并用start()方法启动线程。
多线程
多线程的概念很好理解就是多条线程同时存在,但要用好多线程确不容易,涉及到多线程间通信,多线程共用一个资源等诸多问题。
使用多线程的优缺点:
优点:
1)适当的提高程序的执行效率(多个线程同时执行)。
2)适当的提高了资源利用率(CPU、内存等)。
缺点:
1)占用一定的内存空间。
2)线程越多CPU的调度开销越大。
3)程序的复杂度会上升。
网友评论