多线程常用方法sleep(),wait(),join(),yield()总结.

sleep()和wait()的区别:--sleep锁还在/wait锁释放
sleep的方法主要是让线程暂时休息一段时间,时间一到自动恢复,因此,调用sleep方法不会释放锁.
wait方法被调用,会释放锁.
简单来说wait()会释放对象锁而sleep()不会释放对象锁。

1.sleep();--让调用这个方法的正在执行的线程休眠一段时间--不释放锁
Thread.sleep(3000)//毫秒

2.wait();--要被notify/notifyAll唤醒    --synchronized 常一起使用
lock.wait();

try {
             synchronized (lock) {
                 System.out.println("begin wait() ThreadName="
                         + Thread.currentThread().getName());
                 lock.wait();
                System.out.println("  end wait() ThreadName="
                         + Thread.currentThread().getName());
             }
        } catch (InterruptedException e) {
             e.printStackTrace();
         }

3.join()的作用,以及如何使用.----join()的本质--阻断.
t1.join();  
public class TestJoin {
 
    
public static void main(String[] args) throws InterruptedException {
        
// TODO Auto-generated method stub
        
    ThreadTest t1=new ThreadTest("A");
        
    ThreadTest t2=new ThreadTest("B");
        
        t1.start();
        
        t2.start();
        t1.join();
 --或者t2.join()作用一样
        t3.start();    
   }

}

class ThreadTest extends Thread {
    
    private String name;
    
    public ThreadTest(String name){
        this.name=name;
    }
    public void run(){
        
        for(int i=1;i<=5;i++){
            
            System.out.println(name+"-"+i);
        
        }        

    }

}


有阻断作用,后面线程3不执行.等线程1,2执行完以后,再执行线程3.
t1和t2依然随机执行,不影响t1,t2执行顺序.

什么时候使用----
需要对线程进行阻断时..

 

4.Thread.yield();----将时间片礼让给别的线程.
使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程而该线程在下一次中不会执行到了.

 

5.线程优先级:通过setPriority(int priority)设置线程优先级提高线程获取时间的几率(这只是提高线程优先获取时间片的几率 而不是肯定优先执行) getPriority()获取线程的优先级 最高为10 最低为1 默认为5

public static void main(String[] args) {
        A a = new A("线程一:");
        B b = new B("线程二:");
        a.setPriority(3);
        b.setPriority(10);
        a.start();
        b.start();
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值