多线程,个人觉的和单独整个方法,没有啥区别,思想都是一样的。
只不过针对的级别不一样,方法是在一个线程内,甚至于具体的事情上的做单独处理,而线程是在整个进程的级别去考虑独立做一些事情。
1. start 方法:让线程处于就绪的状态,也就是任务调度器可以直接执行。
2. run 方法:就是让线程具体执行的方法。
3. sleep方法: 就是让线程休眠,实际上线程的状态由runnable 变为了 timed_waitting。其他线程可以用interrupt方法打断睡眠,但是会有异常。休眠结束也不一定线程会立即执行。值得说的是一般情况下:在使用while死循环的时候,我们会去加这个sleep方法,避免线程空载运行,而不释放cpu的使用权。
while (true){ try { TimeUnit.MILLISECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } }
4. getState方法: 获取线程的状态,线程的状态分为
public enum State { // 线程没有启动之前 NEW, // 线程处于就绪状态,线程执行了start方法后 RUNNABLE, // 线程阻塞,等待同步块或者同步方法返回锁 BLOCKED, // 线程由于调用了object.wait 或者 thread.join 方法 或者lockSupport.park 方法而处于等候状态 // 或者线程正在等候执行另一个线程执行一些特殊的操作,如线程唤醒 object.notify WAITING, /** * 线程阻塞一定的时间,由于调用以下的方法: * <ul> * <li>{@link #sleep Thread.sleep}</li> * <li>{@link Object#wait(long) Object.wait} with timeout</li> * <li>{@link #join(long) Thread.join} with timeout</li>