1.多线程常用方法对比
1.1 start与run的区别
- start()方法是用来启动线程,使线程处于就绪状态。
- run()方法内写着线程执行的逻辑,开始执行run()方法时线程处于运行状态,当run()方法执行完毕后,线程处于死亡状态。
1.2 sleep与wait的区别
- sleep()属于Thread类/
- wait()属于Object类。
- sleep()方法被调用后,线程不会释放对象锁,只是暂停指定的时间,当时间到了又会变成运行状态。
- wait()方法被调用后,线程会释放对象锁,并进入等待池。当此对象调用notify()、notifyAll()方法后才有机会变为运行状态。
2.守护线程
- 守护线程是后台线程,它有一个特性,即为用户线程 提供公共服务,在没有用户线程可服务时会自动离开。
- 通过 setDaemon(true)来设置线程为“守护线程”;在 Daemon 线程中产生的新线程也是 Daemon 的。
- 线程则是 JVM 级别的。
- 垃圾回收线程就是一个经典的守护线程。
3.线程常用方法
- sleep():线程睡眠(毫秒)。
- join(): 等待线程终止。
- activeCount(): 程序中活跃的线程数。
- currentThread(): 得到当前线程。
- isDaemon(): 一个线程是否为守护线程。
- setDaemon(): 设置一个线程为守护线程。
- setName(): 为线程设置一个名称。
- wait(): 强迫一个线程等待。
- notify(): 通知一个线程继续运行。
- isAlive(): 判断一个线程是否存活。
- getPriority()::获得一个线程的优先级。
- setPriority(): 设置一个线程的优先级。