0%

Java12.5

线程

方法:

  1. 自定义实现runnable接口
    重载run()操作,作为参数创建Thread
  2. 继承Thread类
    extends Thread,间接实现runnable
    run(),start()开始执行run(),Thread implements Runnnable
Thread构造方法

参数:无参、线程名、runnable
内部类保存了外部类的指针

Thread.sleep(100)休眠一百毫秒

注意使用try-catch(sleep可能被打断)
==native==方法:调用本地的、底层的代码,主要用于执行run()

对共享数据的访问不完整性=>解决方法:
  • 做成一个整体:synchronized,修饰方法或代码段,每个包含synchronized的对象使用一把互斥锁
  • 使用时避免死锁
  • 若修饰一个静态方法,所有对象共用一把互斥锁

    线程生命周期

    新建、就绪、执行、阻塞/消亡
    yield()放弃run()回到就绪
    blocked:I/O操作、wait()释放互斥锁、sleep()和suspend()不释放互斥锁

wait()与notify():
消费者生产者模式,实现线程间通信

但可能造成死锁,synchronized,同时等待对方放弃自己需要的资源