java实现多线程

本文介绍了Java中的同步异步概念,包括线程的同步与异步执行方式。接着详细阐述了通过继承Thread类和实现Runnable接口创建线程的方法,以及Callable接口的使用,它允许返回结果并能抛出异常。文章还提及了线程的状态、锁机制(synchronized和Lock)以及死锁问题,并简要讨论了线程通信和线程池的重要性和应用。
摘要由CSDN通过智能技术生成

一、同步和异步

1、同步就是A调用B,调用一旦开始,A必须等到B调用返回结果后,才能继续后续的行为。

2、异步就是A调用了B方法但是不需要等待B方法返回的结果,就能继续执行A方法中剩下的内容。

3、线程同步和异步:一个进程启动的若干个不相关进程,他们之间的相互关系为异步;同步必须执行到底后才能执行其他操作,异步可同时执行。
(多个线程在执行的过程中是不是使用同一把锁。如果是,就是同步;否则就是不同步)

4、线程概念

在这里插入图片描述

二、 继承Thread类实现多线程

步骤:
1、 自定义线程类继承Thread类;
2、 重写run()方法,编写线程执行体;
3、 创建线程对象,调用start()开启线程。线程开启不一定立即执行,由CPU调度执行。

// 1、自定义线程类
public Class TestThread extends Thread{
  //2、重写run()方法
    @Override
    public void run(){
      //线程方法体内容
    }
}

public static void main(String[] args){
   //3、创建线程对象
   TestThread  t1 = new TestThread();
   t1.strart();
}

注意:

在这里插入图片描述

三、实现Runnable接口,重写run方法

步骤:
1、定义类实现Runnable接口;
2、重写run()方法,编写线程执行体;
3、创建线程对象,调用start()启动线程;

public Class TestThread implements Runnable{
    @Override
    public void run(){
      //线程方法体内容
    }
}

public static void main(String[] args){
   //创建线程对象
   TestThread  t1 = new TestThread();
   Thread t = new Thread(t1);
   //启动
   t.strart();
}

【对比】:

1、源码角度,Thread实现了Runnable接口,提供了更多的可用方法和成员。
2、无论Thread 和 Runnable 都会new Thread(),然后执行run()方法。

四、实现Callable接口

public Class TestThread implements Callable<Boolean>{
    @Override
    public Boolean call(){
      //线程方法体内容
      return true;
    }
}

public static void main(String[] args){
   //创建线程对象
   TestThread  t1 = new TestThread();
   //创建执行服务
   ExecutorService ser = Executors.newFixedThreadPool(3);
   //提交结果
   Future<Boolean> r1 = ser.submit(t1);
   //获取结果
   boolean rs1 = r1.get();
   //关闭服务
   ser.shutdownNow();
}

优点:
1、可以定义返回值
2、可以抛出异常

五、线程状态

在这里插入图片描述


在这里插入图片描述

六、线程方法

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


七、锁

1、synchronized
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、Lock

在这里插入图片描述

在这里插入图片描述

3、对比

在这里插入图片描述

八、死锁

在这里插入图片描述
在这里插入图片描述

九、线程通信

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

十、线程池

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值