线程基础知识

并发编程;这种能够让多个任务同时运行的编程方式称为并发(Concurrency)编程。

线程概述;一个正在运行的程序通常称为一个进程(Process),每个进程都有自己独立的一块内存空间,每个进程的内部数据和状态都是完全独立的。
线程编程相关API;ava多线程编程相关的核心类和接口主要包括Thread类、Runnable接口、Object类等。
线程的创建;
在Java中,可以使用两种方法来创建一个新线程:
 编写一个继承Thread类的类,然后在类中重写Thread类的run()方法。
 编写一个类实现Runnable接口,然后将该类的实例与java.lang.Thread对象联系在一起。
通过继承Thread类来创建线程;

  1. 创建一个继承Thread类的类。
  2. 在创建的Thread子类中重写run()方法,在方法中写入想要线程运行的代码。
  3. 创建Thread子类的实例。
  4. 通过调用该实例上的start()方法,开始运行线程。
    通过实现Runnable接口来创建线程;
    1) 创建一个类实现Runnable接口,用于代表我们需要线程完成的任务。
    2)在Runnable指定的run()方法内,放入想要在线程中执行的代码
    3) 创建一个Runnable类的实例。
    4) 创建一个Thread对象,将Runnable的实例做为构造器参数传入进去
    5)通过调用Thread类的实例的start()方法,开始执行线程。
    创建多线程程序;
    线程的优先级;线程运行的顺序并不是以该线程创建的先后顺序而定,而是以优先级来决定。这也是在上面的程序中,先创建的线程未必会先运行的原因。优先级分三种,最大为10,最小为1,默认为5。
    线程的状态;新建(new),挂起(yield),休眠(sleep),
    休眠;一定时间内线程停止运行进入休眠状态,但是之后是直接进入就绪状态。
    挂起,让开道路让出cpu控制权一定时间。
    join()方法;该方法会让当前正在运行的线程暂停运行,并等待调用join()方法的线程运行完成后,才继续运行。
    yield()方法;yield()方法会让线程由Running状态直接回到Runnable状态,而不会阻塞(Blocked)一段指定的时间。因此,如果调用yield()方法的线程的优先级太高的话,该线程很可能会立刻由Runnable状态变为Running状态。
    线程同步
    当两个以上的线程需要访问共享资源时,我们必须确定在同一时间点只有一个线程能够存取共享资源,而运行这个目标的过程就称为同步。
    wait() 让使用对象的线程停止运行,并进入等待,直到另一个使用该对象的线程运行notify()方法。
    notify() 线程在对象中碰到notify()方法时,会唤醒使用相同对象的第一个碰到wait()的线程。
    notifyAll() 线程在对象中碰到notifyAll()方法时,会唤醒使用相同对象的所有线程,并让优先权最高的线程准备运行。

 计算机程序在实现多任务处理有两种方式:基于多进程和基于多线程。
 创建线程类的两种方法:实现Thread类和实现Runnable接口。
 通过调用start()方法来启动线程。
 线程优先级分别为1-10,默认优先级为5。
 同步允许一次只有一个线程访问共享资源,同步可分为同步方法和同步块。
 线程之间通过wait()、 notify()、 notifyAll()方法通信。
 两个线程在两个同步对象上循环依赖时,将发生死锁

相关文章:

  • 2021-04-12
  • 2021-05-01
  • 2021-08-07
  • 2021-08-14
  • 2021-08-19
  • 2021-09-04
猜你喜欢
  • 2022-12-23
  • 2021-12-25
相关资源
相似解决方案