多线程顺序的控制(wait,notity,sleep)

public class abc extends Thread{
    private Object prev=null;
    private Object self=null;
    private String msg=null;
    public abc(Object prev,Object self,String msg){
        this.prev=prev;
        this.self=self;
        this.msg=msg;
    }
    public void run(){
        int count=0;
        while(count<1000){
            synchronized(prev){
                synchronized(self){
                    System.out.print(msg);
                    if(msg.contains("C"))
                        System.out.println();
                    count++;
                    self.notify();
                }
                if(count==1000)
                break;
                try{
                    prev.wait();}
                catch(Exception e)
                    {e.getMessage();}
            }
            
        }
        
    }
    public static void main(String[] args){
        Object a=new Object();
        Object b=new Object();
        Object c=new Object();
        abc abc1=new abc(c,a,"A");
        abc abc2=new abc(a,b,"B");
        abc abc3=new abc(b,c,"C");
        try{
        abc1.start();Thread.sleep(100);}catch(Exception e){e.getMessage();}
        try{
        abc2.start();Thread.sleep(100);}catch(Exception e){e.getMessage();}
        abc3.start();
    }
}

posted on   heysong  阅读(325)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示