多线程顺序的控制(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();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理