java高级编程之多线程【超详细,有这一篇就够了!!!】

多线程

多条执行路径,主线程和子线程并行交替执行

program:程序

process: 进程

Thread:线程

进程是系统分配资源的最小单位,线程是CPU调度和执行的最小单位

什么是线程

线程是由进程创建的,是进程的一个实体,一个进程可以有多个线程(线程也可以创建一个新的线程)

单线程:同一个时刻只允许执行一个线程

多线程:同一时刻可以执行多个线程

  • 并发:同一个时刻,多个任务交替执行,造成一种同时执行的错觉,单核CPU实现的多任务就是并发

  • 并行:同一个时刻,多个任务同时执行,多核CPU可以实现并行

进程中所有线程都结束进程才会结束,主线程结束的时候如果还有其他子线程还在运行的话,进程继续运行,直到所有线程全部结束

线程创建

 class Student extends Thread{}
 Stuedent student = new Student();
 student.star();
 Class Student implement Runnable(){}
 Student student = new Student();
 Thread thread = new Thread(student);
 thread.star();

线程终止

 Class Student implement Runnable(){
     private boolean loop = true;
     public void setLoop(boolean loop){
         this.loop = loop;
     }
     public void run(){
         while(loop){
             
         }
     }
 }
 Class main{
     public static void main(String args[]){
         Student student = new Student();
     Thread thread = new Thread(student);
     thread.star();
         Thread.sleep(10000); //休眠10秒
         student.setLoop(false); 将while循环条件变为false,结束循环 
     }
 }
 ​

线程常用方法

说 明
void setPriority(int newPriority)更改线程的优先级
static void sleep(long millis)在指定的毫秒数内让当前正在执行的线程休眠
void join()当前线程变为执行状态,其他线程需要等当前线程执行完之后才能继续执行
static void yield()暂停当前正在执行的线程对象,并执行其他线程(礼让,当前线程变为就绪状态,可能又被分到CPU继续执行)
void interrupt()中断线程(可以提前结束线程的休眠)
boolean isAlive()测试线程是否处于活动状态
setDaemon(true)将线程设置为守护线程,除他之外的所有线程结束,此线程跟着结束
String getState()返回当前线程的运行状态

Synchronized 关键字

使用synchronized修饰的方法控制对类成员变量的访问

 访问修饰符 synchronized 返回类型 方法名(参数列表){……}
 //或者
 synchronized 访问修饰符 返回类型 方法名(参数列表){……}
  • synchronized就是为当前的线程声明一把锁

多个并发线程访问同一资源的同步代码块时

  • n同一时刻只能有一个线程进入synchronized(this)同步代码块

  • n当一个线程访问一个synchronized(this)同步代码块时,其他synchronized(this)同步代码块同样被锁定

  • n当一个线程访问一个synchronized(this)同步代码块时,其他线程可以访问该资源的非synchronized(this)同步代码

线程安全

方法是否同步效率比较适合场景
线程安全多线程并发共享资源
非线程安全单线程

StringBuffer:线程安全,速度慢

StringBuilder:非线程安全,速度快

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值