Java多线程编程

线程:程序中单独顺序的控制流,线程本身依靠程序进行运行,线程是程序中的顺序控制流,只能使用分配给程序的资源和环境。

进程:执行中的程序,一个进程至少要包含一个线程。

单线程:程序中只存在一个线程,实际上主方法就是一个主线程。

多线程:多线程是在一个程序中运行多个任务,多线程目的是更好的使用CPU资源。

二、线程的实现
线程的实现2种:
继承Thread类
实现Runnable接口
Thread类:
Thread类是在java.lang包中定义的,继承Thread类必须重写run()方法。
定义格式:
class className extends Thread{
run(){
//此处重写run方法
};
}
在实例中,我们测试了run()方法和start()方法,运行情况说明线程的启动一定不是通过run()方法的,没有并行机制,A执行完再执行B。start()方法执行过程中是并行的,哪个抢占资源运行哪个。
Runnable接口:
public class MyRunnable implements Runnable{
run(){
//重写run方法
};
}

三、线程的状态

创建状态:准备好了一个多线程的对象
就绪状态:调用了start()方法,等待CPU进行调度
运行状态:执行run()方法
阻塞状态:暂时停止执行,可能将资源交给其他线程使用
终止状态(死亡状态):线程销毁

四、线程常用方法

Thread类中:
    1.取得线程名称 getName()
    2.取得当前线程对象  currentThread()
    3.判断线程是否启动  isAlive()
    4.线程的强行运行  join()         需要使用try catch来捕获InterruptedException异常
    5.线程的休眠  sleep()  异常捕获同上  示例中在run方法中实现
    6.线程的礼让  yield()  示例中也在run方法中定义

五、线程的优先级

1.优先级顺序设置
      1 - MIN_PRIORITY
      10 - MAX_PRIORITY
      5 - NORM_PRIORITY
      默认状态下值为5
Thread.setPriority()设置优先级,设置为MAX_PRIORITY的线程并不一定可以最先运行,是一种可能状态,有优势。

六、线程同步

1.同步代码块
      在代码块上加上“synchronized”关键字,则此代码块就成为同步代码块。资源共享的时候使用同步。
 2.同步代码块的格式:
       synchronized(同步对象) {
              需要同步的代码块;
       }
 3.同步方法
      除了代码块可以同步,方法也是可以同步的
 4.方法同步格式:
      synchronized void 方法名称() {}
 5.死锁 

七、线程的生命周期

Java多线程编程_第1张图片
线程的生命周期.png

你可能感兴趣的:(Java多线程编程)