JAVASE_线程生命周期+线程通信+线程池常见所需要的方法

①start();  线程对象调用后,该线程从新建状态,切换为就绪状态,就绪状态是一种临时状态,该状态会抢占锁,如果没有抢到就会持续就绪状态; 如果抢到了,就会切换到运行状态。

②sleep(long); 该方法是static静态方法,需要类名打点调用;调用该方法后,当前线程会进入休眠状态,当指定的休眠时间到达后,该线程会继续执行;休眠时间结束之前,该线程会进入TIMED_WAITING状态。

③wait();该方法是实力方法,由锁对象调用。该方法分为有参和无参;

        无参方法被调用时,当前线程会进入WAITING状态同时释放锁,只有在其他线程调用notify()或notifyAll()方法,当前线程才会被唤醒;

        有参方法被调用时,参数表示等待时间,等待时间结束后,该线程会自动唤醒无需调用notify(),该效果与sleep()方法类似;

④notify()&notifyAll():

        该方法与wait()方法配合使用

        notify() : 锁对象调用该方法后,会唤醒同一锁对象调用wait()方法的线程;如果有多个线程进入了WAITING状态, 那么系统会自动分配唤醒其中一个线程;

        notifyAll() : 锁对象调用该方法后, 不管有多少个线程,会唤醒所有处于WAITING无限时等待状态的线程; 

⑤suspend()方法:该方法调用后会使线程暂停运行,但是不会释放锁,会使其他线程进入BLOCK阻塞状态,但是当前线程依然是RUNNABLE状态

⑥resume(); 该方法会唤醒调用suspend方法的线程; suspend()和resume()这两个方法在java1.2之后已经过时,被wait()和notify()所代替

⑦stop():强制停止线程, 线程进入TERMINATED终止状态, 但是因为过于暴力容易破坏线程内容已被interrupt()取代

⑧interrupt() : 中断线程,代替了stop方法; 该方法可以中断处于BLOCK状态, TIMED_WAITING状态, WAITING状态中的线程。该方法比较温柔,是以通知的方式告诉线程,不影响线程的执行。

⑨getState(); 获取线程当前状态

⑩join()&join(long); 该方法用于两个及以上线程使用

        无参->比如:在线程A中,有线程B调用jion(),意味着当线程A执行到jion()这条语句时,线程A进入BLOCK阻塞状态,值有点线程B全部执行完成之后, 线程A才会继续执行。

        有参->当参数时间结束后,不管新加入的线程执没执行完成都会停止运行,让当前线程继续执行

⑪execute(Runnable command) : 用于向线程池中添加任务,参数为Runnable接口的实现类;

        语法: 线程池对象.execute();

⑫submit(Runnable task): 需要获取返回值的线程时调用该方法,参数为Callable接口的实现类;

        语法: 线程池对象.submit();      最后调用get方法获取返回值;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值