多线程的概述、意义、实现方法、优先级、控制、生命周期、安全性,线程安全类
1、概述
进程:正在运行的程序,是系统进行资源分配的独立单位。每一个进程都有自己的内存空间和系统资源。
线程:进程中的单个控制流,是进程的一条执行路径。
单线程:一个应用程序只有一条执行路径。
单线程:一个应用程序拥有多条执行路径。
JVM的启动是多线程的,至少启动了主线程(main)和垃圾回收线程。
2、意义
多进程提高CPU的使用率,多线程提高应用程序使用率(抢CPU资源)。
3、实现方法
(1)、继承Thread类:自定义类继承Thread,重写run();方法,创建对象,启动线程【th.start();】。
(2)、实现Runnable接口:自定义类实现Runnable接口,重写run();方法,创建对象,创建Thread对象并传递参数启动线程【new Thread(ru).start();】。
实现接口方式的好处
4、优先级
setPriority(); 。线程的优先级默认为5,范围1~10。
5、控制
sleep();
join();
yield();
setDaemon();
stop();
interrupt();
6、生命周期(新建、就绪、运行、阻塞、死亡)
7、安全性
多线程可能出现的问题:是否有多线程环境,是否有共享数据,是否有多条语句操作共享数据。
同步解决线程安全问题:synchronized,如:synchronized(对象【obj】){ 同步的内容【代码块】 }。
同步的特点
注意事项:同步解决线程安全问题的关键在【对象】上,该【对象】如同锁的功能,所以多线程必须是同一把锁(同一个【对象】)。
8、线程安全类
StringBuffer,Vector,Hashtable。
Collections类的方法,可以将线程不安全的集合类变为线程安全的集合类。