进程:当前正在运行的程序,一个应用程序再内存中的执行区域

线程:进程中一个执行控制单元,执行路径

一个进程最少有一个线程,也可由有多个线程,线程是cpu最小的调度单元

单线程:安全性高,效率底

多线程:安全性底,效率高——360卫士,边体检,边清理,边杀毒/迅雷同时下载多个资源

 

cpu执行程序(线程)的随机性,多个程序来回高速切换

主方法是单线程的

 

Thread类

1、创建一个继承Thread的类

2、重写run方法

3、在需要的地方new线程实例

4、启动线程,调用start方法

 

Runnable接口

1、创建一个实现Runnable接口的类

2、重写run方法

3、在需要的地方,new Thread类,并把线程类的实例作为入参

4、启动线程,调用start方法

 

有了Thread为什么还要Runnable?

1、实现Runnable接口,可以继承其他类

2、实现Runnable接口的对象可以放入多个Thread对象中,可以共用实现了Runnable接口的线程类中数据

 

 

 

 相关方法:

getName——获取线程的名字

setName——设置线程的名字

currentThread——获取当前线程

sleep——线程睡眠,单位是毫秒

 

synchronized:同步,可以修饰代码块和方法,一旦被某个线程访问,则直接锁住,其他线程无法访问,只能等解锁

同步:安全性高,效率底

非同步:效率高,安全性底

同步代码块:

  synchronized(锁对象){

    

  }

同步方法:

  public synchronized void menthod(){

    

  }

注意:锁对象需要被所有的线程所共享

非静态同步方法的默认锁对象是this

静态的同步方法的默认锁对象是当前类字节码对象

 

线程的生命周期:

状态:

新建:创建线程对象

就绪:具备了执行条件,没有具备执行权力

运行:具备了执行条件,也具备了执行条件

等待:wait,使用锁对象调用wait,会释放执行权力

唤醒:notify,使用锁对象调用notify

死亡:线程对象变成了垃圾

 

 

 

 

 

posted on 2019-12-05 13:00  大景少  阅读(109)  评论(0编辑  收藏  举报