1.什么是多线程
多线程是进程中执行的最小单位,可完成一个独立的顺序流程。每个进程中,必须至少建立一个线程(这个线程名称为主线程)来作为这个进程运行的入口点。
进程
进程(Pricess)是程序的一次动态执行过程,它对应了代码的加载执行至执行完毕·的一个完整过程,这个过程也是进程从本身产生,发展至消亡的过程。
进程的特点
进程是系统运行程序的基本单位。
每一个进程都有自己的独立的一块空间,一组系统资源。
每一个进程的内部数据和状态都是全部完全独立的
多线程的好处
1.从分利用CPU的资源:执行单线程的程序时,如程序发生阻塞,CPU可能存在空闲状态,这将造成了计算机的资源浪费,而使用多线程可以在线程休眠的时候取运行其他线程,
这样可以打打提高资源利用率。
2.简化编程模型:一个即长又复杂的进程可以考虑分为多个进程,成为几个独立的运行部分。
3.带来良好的用户体验:由于多个线程可以交替执行,减少了避免因程序阻塞或意外情况造成的响应过慢现象,降低了用户等待的机率。
Tread类极其常用的方法
构造方法 说明
Tread() 分配新的Tread对象
Tread(Runnable target) 分配新的Tread对象,target为run()方法调用的对象
Treeab(Runnable,target,String name) 分配新的Tread对象,target为run()方法调用的对象,nam为新线程的名称
线程的优先级
当同一时刻有一个或多个线程处于运行状态时,他们需要排队等待CPU资源,每个线程会自动获得一个线程的优先级(Priority),优先级的高低反应线程的重要紧急程度。
那么此刻,一般优先级高的有先获得CPU的几率较大,但是这个结果不绝对,线程优先级调度是一个复杂的过程。
线程的优先级用1-10表示,1表示优先级最低,10表示优先级最高默认值是5,这些优先级对应一个Tread类的公用静态常量。
线程的休眠:
在程序中允许定义一个线程进行暂时休眠,直接用Tread.Sleep()方法即可以实现线程
sleep()方法定义语法如下:
public static void sleep(long millis)
sleep()方法会让当前线程休眠(停止执行)millis毫秒,线程由运行到不可运行状态,睡眠时间过后线程将再次进入运行状态,调用sleep()方法需处理InterruptedException异常
示例:
public class ThreadDemo{
public static void main(String[] args){
System.out.print("Wait");
Wait.bySec(5); //让主线程等待5秒
System.out.print("Start");
}
}
Wait类
public class Wait{
public static void main(String [] args){
for (int i = 0; i <s; i++) {
System.out.print(i+1+"秒");
try {
Traed.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
多线程的状态流程图