线程的状态

新建状态: 一个新产生的线程从新状态开始了它的生命周期。它保持这个状态直到程序 start 这个线程。

运行状态:当一个新状态的线程被 start 以后,线程就变成可运行状态,一个线程在此状态下被认为是开始执行其任务

就绪状态:当一个线程等待另外一个线程执行一个任务的时候,该线程就进入就绪状态。当另一个线程给就绪状态的线程发送信号时,该线程才重新切换到运行状态。

休眠状态: 由于一个线程的时间片用完了,该线程从运行状态进入休眠状态。当时间间隔到期或者等待的时间发生了,该状态的线程切换到运行状态。

终止状态: 一个运行状态的线程完成任务或者其他终止条件发生,该线程就切换到终止状态。

怎么顺序执行线程?

  • 方法一

利用join,join里面有一个wait(0)方法,这里并不是等待使用 着,而是阻塞了主线程,当线程执行完成后,主线程阻塞结束。

  • 方法二

线程池submit();

  • 方法三CountDownLatch类:当计数器清为0的时候取消阻塞

线程池的原理

多线程执行文件,怎么保证线程安全

wait和sleep区别,怎么使用?线程冲突了怎么办?

sleep()来自 Thread 类,wait()来自 Object 类;

调用 sleep()方法,线程不会释放对象锁。而调用 wait 方法线程会释放对象锁;

sleep()睡眠后不出让系统资源,wait 让其他线程可以占用 CPU;

sleep(milliseconds)需要指定一个睡眠时间,时间一到会自动唤醒。而 wait()需要配合 notify()

多线程的方法

Rsa,md5的原理

synchronized和ReentrantLock的区别

  • synchronized直接加入锁,方便。结合wait,notify,notifyall
  • ReentrantLock显示的使用锁,更灵活,性能更优秀。结合lock condition

什么是死锁,怎么产生,产生条件,怎么解决?

###对称加密和非对称加密的区别

谢谢您的鼓励~