python与Java线程实现方式的对比

本文对比了Python和Java两种编程语言在实现多线程时的不同方法,包括继承Thread类、实现Runnable接口以及使用Callable接口。同时,详细介绍了各自线程操作的相关方法,如Python中的Lock和Condition,以及Java中的start、join、wait和notify等。并提出了一个多线程问题的经典案例——四个和尚做馒头和吃馒头,展示了线程同步和资源限制的问题。
摘要由CSDN通过智能技术生成

1. python多线程的实现方式:

  • 继承Thread类
  • 实现Runnable接口
  • Callable接口+FutureTask包装器来创建Thread线程

    线程操作涉及到的方法:
    Thread:start启动 join加入新线程
    Lock/Rock:acquire():加锁 release(): 释放锁
    Condition:acquire():加锁 release(): 释放锁 wait notify notify_all
    Event: set()等同于notify_all clear() 取消notify_all
    time: sleep
    timer:Timer(interval function args=[] kwargs={})

  • interval: 指定的时间

  • function: 要执行的方法
  • args/kwargs: 方法的参数

python多线程实现的三种方式详解

2.Java多线程的实现方式:

  • 继承Thread类实现多线程
  • 实现Runnable接口方式实现多线程
  • 通过 Callable 和 Future 创建线程。

线程操作涉及到的方法:
start() 、stop() (过时) 、join() 、wait() 、sleep() 、notify() 、notifyAll()
Java多线程方法详解

JAVA多线程实现的三种方式详解

经典案例

共有四个和尚
其中一个和尚负责做馒头
其他三个和尚吃馒头
要求
当做馒头的时候,不能吃馒头
当吃馒头的时候不能做馒头
馒头上线只能是30个
在吃馒头的时候不能出现一个馒头被多个和尚吃
不能出现吃的时候和尚吃出异常(如一个和尚永远也吃不到,或者 一个和尚吃了一个不存在的馒头)

Java代码:

package com.dsj101.thread;  
import java.util.ArrayList;  
import java.util.List;  

public class Test {
     
   static class ManTou{  
       private int num;  
       public ManTou(int num) {  
           this.num = num;  
       }  
       @Override  
       public String toString() {  
           return "第"+num+"个";  
       }  
   }  
   public static List<ManTou> manTous=new ArrayList<>();  
   public static void main(String[] args) {  
       new HuoFu("大头和尚").start();  
       new ChiHuo("白眉和尚").start();  
       new ChiHuo("牛鼻子和尚").start();  
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值