Java多线程学习笔记

操作系统的多任务:在同一时刻运行多个程序的能力。
并发执行的进程数量并不是由CPU数量决定的。
操作系统将CPU的时间片分配给每一个进程,给人并行处理的感觉。

通常的每一个任务成为一个线程(thread)。

无论是继承自Thread类还是实现Runnable接口,如果要达到启动线程的目的,我们都不能直接调用run方法,而是应该调用Thread.start()方法。也就是说,实现Runnable接口的最后还是要绑定到Thread类中,然后才能启动。

Thread类方法:

  static void sleep(long millis)//:当前线程停止执行。
  Thread(Runnable target)//:构造一个新线程,用于调用给定target的run()方法。
  void start()//:启发线程,将引发调用run()方法。
  void run()//:调用关联Runnable的run()方法。
  void interrupt()//:向线程发送中断请求。线程的中断状态将被设置为true。如果这个线程被      一个sleep调用阻塞,那么,会抛出异常。
  static boolean interrupted()//:测试当前线程是否被中断。这个方法会将当前线程的中断状态重置为false。
  boolean isInterrupted()//:测试线程是否被终止。但是不会有任何改变。
  static Thread currentThread()//:返回当前执行的Thread对象。
  void join()//:等待终止指定的线程。
  void join(long millis)//:等待终止指定线程死亡或者经过指定毫秒数。
  Thread.State getState()//:得到这一线程的状态。

线程状态:(6种)
New:新创建,执行了new Thread(Runnable target)构造函数。
Runnable:可运行,执行了start方法以后。一个可运行的线程可能正在运行,也可能没有运行,这取决于操作系统给线程提供的运行时间。
Blocked:被阻塞,线程进入可运行以后,系统分配了运行时间,但是此线程却试图获取一个被其他线程占据的锁,那么此线程就是进入阻塞状态。
Waiting:等待,此线程得到了系统运行时间,自己调用了wait方法,此时自身就会一直等待其他线程的通知。
Timed waiting:计时等待,有几个带有超时参数的方法,调用以后就会此状态。
Terminated:被终止,执行run方法自然死亡或者发生异常导致run方法意外死亡。

猜你喜欢

转载自blog.csdn.net/qq_36006553/article/details/76886863