①start(); 线程对象调用后,该线程从新建状态,切换为就绪状态,就绪状态是一种临时状态,该状态会抢占锁,如果没有抢到就会持续就绪状态; 如果抢到了,就会切换到运行状态。
②sleep(long); 该方法是static静态方法,需要类名打点调用;调用该方法后,当前线程会进入休眠状态,当指定的休眠时间到达后,该线程会继续执行;休眠时间结束之前,该线程会进入TIMED_WAITING状态。
③wait();该方法是实力方法,由锁对象调用。该方法分为有参和无参;
无参方法被调用时,当前线程会进入WAITING状态同时释放锁,只有在其他线程调用notify()或notifyAll()方法,当前线程才会被唤醒;
有参方法被调用时,参数表示等待时间,等待时间结束后,该线程会自动唤醒无需调用notify(),该效果与sleep()方法类似;
④notify()¬ifyAll():
该方法与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方法获取返回值;