首页 > 其他分享 >多线程

多线程

时间:2023-12-19 21:35:16浏览次数:31  
标签:Thread lock 线程 new 多线程 唤醒 wait

sleep方法:

  • sleep方法使当前线程暂停执行指定的时间,然后继续执行。
  • 在线程休眠期间,它不会释放任何锁资源。
  • sleep方法主要用于控制线程的执行速度或等待某个条件成立。
Thread.sleep(5000); // 休眠5秒钟
Thread t1 = new Thread(new Runnable() {  
    @Override  
    public void run() {  
        System.out.println("线程1开始执行...");  
        try {  
            Thread.sleep(5000); // 线程1休眠5秒钟  
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        }  
        System.out.println("线程1执行结束...");  
    }  
});  
t1.start(); // 启动线程1

wait方法:

  • wait方法是Object类的一个方法,因此任何对象都可以调用它。
  • wait方法使当前线程进入等待状态,并释放对象的锁,直到其他线程调用同一对象的notify()或notifyAll()方法来唤醒该线程。
  • wait方法通常用于线程间的协作和同步。
synchronized (lock) {  
    while (!condition) {  
        lock.wait(); // 等待其他线程满足条件后唤醒  
    }  
    // 执行任务  
}
Object lock = new Object();  
  
Thread t1 = new Thread(new Runnable() {  
    @Override  
    public void run() {  
        synchronized (lock) {  
            while (true) {  
                try {  
                    lock.wait(); // 线程1等待其他线程唤醒它  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }  
                System.out.println("线程1被唤醒,继续执行...");  
            }  
        }  
    }  
});  
  
Thread t2 = new Thread(new Runnable() {  
    @Override  
    public void run() {  
        synchronized (lock) {  
            System.out.println("线程2唤醒线程1...");  
            lock.notify(); // 线程2唤醒线程1  
        }  
    }  
});  
t1.start(); // 启动线程1  
t2.start(); // 启动线程2

线程1进入等待状态,并释放对象的锁。然后线程2获取到对象的锁,并调用lock.notify()方法唤醒线程1。这样,线程1就被唤醒,并继续执行。

标签:Thread,lock,线程,new,多线程,唤醒,wait
From: https://www.cnblogs.com/fengok/p/17914800.html

相关文章

  • 【多线程笔记】Channel
    在面对生产者-消费者的场景下,netcore提供了一个新的命名空间System.Threading.Channels来帮助我们更高效的处理此类问题,有了这个Channels存在,生产者和消费者可以各自处理自己的任务而不相互干扰,有利于两方的并发处理,这篇文章我们就来讨论下如何使用System.Threading......
  • Python多线程应用于自动化测试操作示例
    本文实例讲述了Python多线程应用于自动化测试操作。分享给大家供大家参考,具体如下:多线程执行测试用例实例:importthreadingfromtimeimportsleep,ctimefromseleniumimportwebdriver#测试用例1deftest_baidu(browser,search):print("开始,现在时间是%s"%ctime())print("......
  • linux 使用 mwget 实现多线程下载
    mwget和curl/multicurl一样,m就是multi多线程的意思。mwget是wget的升级版,支持多线程下载【使用方法】gitclonehttps://github.com/rayylee/mwget.gitcdmwgetyum-yinstallpkg-configyum-yinstalllibssl-devyum-yinstallintltool./configuremake&&makeins......
  • Java | 多线程并发编程CountDownLatch实践
    关注:CodingTechWork引言  在一次数据割接需求中,数据需要通过编程的方式进行转移割接到新平台,此时若串行化方式,无疑会拉锯此次战斗,所以首当其冲要使用并发编程来降低割接时长。  本次主要考虑使用CountDownLatch工具类进行并发编程的控制。CountDownLatch概述  在并发编程过程......
  • 关于python http.server 开启多线程并发的问题
    问题描述thon中的http.server模块是单线程的,这意味着它一次只能处理一个请求,而其他请求必须等待。为了解决这个问题,您可以考虑使用多线程或异步处理来处理并发请求。您可以使用Python的ThreadingMixIn来创建一个支持多线程的HTTP服务器,或者考虑使用异步框架如asyncio来处理请求......
  • 多线程+信号量同步线程
    实现场景:多线程+信号量实现线程同步执行线程在创建的时候并不能保证优先顺序,是异步的,如果想按照自己指定的顺序先后执行的话,可以使用一些互斥或者同步的方式;以下我是通过信号量来实现同步:信号量的类型是sem_t,需要的头文件是 #include<semaphore.h>,主要是方法是sem_init......
  • C#:多线程篇
    文章目录基础概念进程线程句柄多线程同步/异步C#中的多线程Thread如何开启新线程线程的停止等待后台线程,前台线程跨线程操作主线程UI线程的优先级扩展封装数据槽内存栅栏资源竞争与线程锁ThreadPoolThreadPool好处线程池如何分配一个线程线程等待线程池如......
  • Python多线程编程:竞争问题的解析与应对策略
    本文将深入探讨Python多线程编程中可能出现的竞争问题、问题根源以及解决策略,旨在帮助读者更好地理解、应对并发编程中的挑战。多线程竞争问题的复杂性源自于对共享资源的并发访问和操作。在不同线程间的交叉执行中,共享资源可能因无序访问而导致数据不一致、死锁或饥饿等问题。解决......
  • 多线程常用方法
    publicclassThreadDemo{publicstaticvoidmain(String[]args)throwsInterruptedException{/*StringgetName()返回此线程的名称voidsetName(Stringname)设置线程的名字(构造方法......
  • 多线程的三种实现方式
    1.什么是多线程有了多线程就可以让程序同时进行多件事情。2.多线程的作用提高效率3.应用场景只要是想多件事情同时运行就需要用到多线程。4.并发和并行并发:在同一时刻,有多个指令在单个cpu上交替运行并行:在同一时刻,有多个指令在多个cpu上同时运行并发和并行有可能同时发生......