个人对Java多线程的理解

线程运行在进程中,一个进程中至少会有一个线程。当多个线程同时运行在一个进程中时,这就是一个多线程应用。每个线程的栈内存是对立的,也就是说一个线程一个栈,线程之间共享堆内存和方法区内存。当jvm调用main函数时会启动一个主线程,垃圾回收器GC是一个单独线程在运行。根据CPU的随机性原理,哪个线程获得到了cpu执行权,哪个线程就执行。

有两种创建线程的方式。

  1. 继承Thread 类子类重写run();方法。
  2. 实现Runnable接口,实现run();方法。

线程5个状态:

  • 被创建:start()
  • 运行:具备执行资格,同时具备执行权;
  • 冻结:sleep(time),wait(), 使用notify()唤醒;线程释放了执行权,同时释放执行资格;
  • 临时阻塞状态:线程具备cpu的执行资格,没有cpu的执行权;
  • 消亡:stop()

猜你喜欢

转载自blog.csdn.net/qq_33656559/article/details/88546669