首页 > 代码库 > Java基础—线程

Java基础—线程

1.什么叫线程

  进程:进行中的程序

  线程:轻量级的进程;程序里的顺序控制流,可以理解为程序里不同的执行路径

       线程体为run()方法(直接调用run()视为普通方法),启动线程为start()方法

2.线程的五种状态

   创建:两种方式 继承Thread类,重写run()方法;实现Runnable接口,实现run()方法

  就绪:调用Thread的start()方法(第二种实现接口方式使用静态代理)

  运行:得到时间片,开始运行

  阻塞:遇到阻塞事件

  终止:线程死亡,严禁使用stop()方法,而应该定义一个boolean flag,并在run()方法中判断标志进行合理结束run()方法进而结束线程。

3.线程常用方法

  Thread.sleep():线程睡眠,参数为当前线程的睡眠毫秒数。(静态方法)。抱着锁睡觉

  join():线程合并,将当前线程与该线程合并,等待该线程终止

  yield():线程让步,让出CPU

  wait():线程等待,当前线程进入wait pool 线程等待池。放弃锁等待

  notify()/notifyAll():线程唤醒,唤醒等待池中的一个/所有线程

4.线程同步

  对象互斥锁:synchronized(obj) 保证同一时刻只能有一个线程访问该对象,从而保证了共享数据的操作完整性。

  同步一般分为两类(注意死锁问题):

      同步方法

        public synchronized void fun1(){}

      同步块

        synchronized(this){}

  解决线程死锁的问题最好只锁定一个对象,不要同时锁定两个对象

 

经典的生产者消费者模型

Java基础—线程