1.1 线程的优势
1.2线程的弊端
1.3 线程和进程的区别
1.4多线程的目的
1.5计算机执行任务的原理
1.6 创建线程的两种方式
1.7 线程的安全问题产生的原因
1.9 线程状态图解
2.0 锁
2.1 死锁
2.2 延迟加载同步代码块儿
2.3 线程间通讯
2.4 同步
2.5 其他
多线程
进程:正在运行中的程序。
线程:就是进程中一个负责程序执行的控制单元(执行路径)
1.1 线程的优势
多线程好处:解决了多部分同时运行的问题
1.2线程的弊端
多线程的弊端:线程太多会导致效率的降低,因为线程的执行依靠的是CPU的来回切换。
1.3 线程和进程的区别
一个进程中可以多执行路径,称为多线程。
一个进程中至少要有一个线程。
了解:
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。
1.4
多线程的目的
开启多个线程是为了同时运行多部分代码,每一个线程都有自己运行的
内容,这个内容称为线程要执行的任务
1.5
计算机执行任务的原理
应用程序的执行都是
cpu
在做着快速的切换完成的,而且切换是随机的
1.6
创建线程的两种方式
1.继承Thread。
继承Thread类;覆盖Thread类中的run方法;直接创建Threadde子类对象创建线程;调用start方法开启线程并调用线程的任务run方法。另外可以通过Thread的getName()获取线程的名称。
主要代码:
class ThreadDemo extends Thread{public void run(){for (int i=0;i<10;i++){System.out.println("线程"+getName()+"正在运行:"+i);}}}
class Demo{public static void main(String args[]){ThreadDemo a=new ThreadDemo();ThreadDemo b=new ThreadDemo();a.start();b.start();}}
2.实现Runnable接口
class ThreadDemo implements Runnable{public void run(){for (int i=0;i<10;i++){System.out.println("线程"+getName()+"正在运行:"+i);}}}class Demo{public static void main(String args[]){new Thread(new ThreadDemo()).start();}}