多线程

本文介绍了线程的概念及其在程序中的状态变化,探讨了使用多线程的原因,并详细讲解了三种多线程的实现方式:继承Thread类、实现Runnable接口、实现Callable接口。此外,还介绍了同步和异步的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多线程

1.线程是指程序在程序过程中,能够执行程序代码的一个执行单元。
会处于运行,就绪,挂起和结束。
2.线程是程序执行的最小单元,一个进程可以拥有很多个线程,各个线程之间共享程序的内存空间(代码段,数据段,堆空间)及一些进程间的资源(如打开的文件),各个线程拥有自己的栈空间。
3.使用多线程的原因:
①.使用多线程可以减少程序的响应时间。
②.与进程相比,线程的创建和切换开销更小
③.多CPU或多核计算机本身就具有执行多线程的能力,如果使用单个线程,将无法重复利用计算机资源,造成资源的巨大浪费。
④.使用多线程可以简化程序的结构,使程序便于理解和维护。

同步和异步

同步:当多个线程需要同时访问同一资源时,他们需要以某种特定的顺序来保证该资源在同一时刻只能被一个线程访问。

注:实现同步机制
获取每个线程的对象锁,在同一时刻只有一个线程进入临界区,当获得该临界区资源的对象释放锁退出临界区,在队列中的优先级高的线程才可获取临界区资源。
1.利用同步代码块实现同步
2.利用同步方法实现同步

异步:每个线程都包含了运行时自身需要的资源和方法,比如在进行输入输出时,不必关心其他的线程的状态和行为。

多线程的实现

1.继承Thread类,重写run方法。

class MyThread extends Thread{
    public void run{
      System.out.println(“This is Body”);//线程的函数体
    }
}
public class Test{
   public static void main(String []args){
     MyThread thread=new MyThread();
     thread.start();//开启线程;
   }
}

2.实现Runnable接口,重写run方法。

class MyThread implements Runnable{
   public void run(){
     System.out.println("This is Body");//线程函数体
    }
}
public class Test{
   public static void main(String []args){
   MyThread thread=new MyThread();
   Thread t=new Thread(thread);
   t.start();//开启线程
 }
}

3.实现Callable接口,实现call方法。

import java.util.concurrent.*;
//创建线程类
public class CallableTest implements Callable<String>{
   public Strng call() throws Exception{
   return "Hello World";
  }
}
public class CallableAndFuture{
   public static void main(String []args){
     ExecutorService thredPool=Executors.newSingleThredExecutor();
     //启动线程
     Future<String> future=threadPool.submit(new CallableTest);
     try{
        System.out.println("waiting thread to finish");
        System.out.println(future.get());//等待线程结束,并获取返回结果
     }catch(Exception e){
         e.printStackTrace();
       }
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值