java之多线程常用的几个方法汇总

本文汇总了Java中多线程的几个关键方法:sleep()用于让线程暂停指定时间,不释放锁;wait(), notify(), notifyAll()用于线程间的通信和同步,wait会释放锁;join()确保线程执行完毕再继续执行;yield()让当前线程暂停,但可能再次获得CPU执行权。" 128159419,11109322,Python实战:gopup模块获取海量数据教程,"['Python', '开发语言', '数据获取', '数据分析', 'gopup模块']
摘要由CSDN通过智能技术生成

java之多线程常用的几个方法汇总

sleep()

  • sleep()方法属于Thread类,主要作用是让当前线程停止执行,把cpu让给其他线程执行,如果有锁,不会释放锁,等睡眠期满之后,恢复为可运行状态,等到切换为运行状态时继续运行。

  • 线程睡眠到期后自动苏醒,并返回到可运行状态,不是运行状态。sleep()中指定的时间是线程不会运行的最短时间,因此,sleep()方法不能保证该线程睡眠到期后就开始执行。

  • Thread.sleep()方法是一个静态方法。

  • java有两种sleep()方法

    • 只有毫秒参数

      sleep(long millis) //1s =1000ms
      
    • 另一个只有纳秒和毫秒

      sleep(long millis,int nanos)
      
  • 代码示例

    //令主线程暂停执行2s
    public class ThreadSeven {
         
        public static void main(String[] args) throws InterruptedException {
         
            long start = System.currentTimeMillis();
            Thread.sleep(2000);
            System.out.println("时间间隔为:"+(System.currentTimeMillis()-start));
    
        }
    }
    
  • 执行结果

    时间间隔为:2001 
    

    睡眠只是停止运行的最短时间,故结果会比2000稍多一点

wait(),notify(),notifyAll()

  • wait()属于object类,会释放当前线程,进入等待此对象的等待索定池。比方说,线程A调用Obj.wait(),线程A就会停止运行,而转为等待状态。至于等待多长时间,那就看其他线程是否调用Obj.notify().其优势显而易见,成为多换个线程之间进行通讯的手段。

  • wait()方法与notify()必须要与synchronized(resource)一起使用

  • 调用某个对象的notify()方法能够唤醒一个正在等待这个对象的monitor(即锁,或者管程),如果有多个,只能唤醒其中的一个。

  • 调用notifyAll()方法能够唤醒所有正在等待这个对象的monitor的线程;

  • 示例代码

    class NumberPrint implements Runnable{
         
    	private int number;
    	public byte res[];
    	public static int count = 5;
    	public NumberPrint(int number, byte a[]){
         
    		this.number = number;
    		res = a;
    	}
    	public void run(){
         
    		synchronized (res){
         
    			while(count-- > 0){
         
    				
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值