下面几点必须记住:
1, 默认情况下不能保证线程的执行顺序, 哪个线程先抢夺到 CPU 的使用权, 它就优先
2, Main 方法也是一个线程
3, 每个程序运行至少启动两个线程, 一个是 man 方法(主线程), 一个是垃圾收集线程
4, 处理器的核心数决定了并行执行的线程数, 一个核心对应一个线程, 当线程数量大于核心数时, 线程将进行抢占cpu使用权来执行
线程状态
创建(New): 使用 new 关键字创建线程对象
就绪(Runnable): 调用了线程的 start() 方法
运行(Running): 该线程正在执行
阻塞(Blocked):
同步阻塞: 获取锁失败, synchronized
等待阻塞: wait()/join()/sleep()
其他阻塞: IO操作等
终止(Daed): 线程运行完毕或抛出异常或人为停止, java 提供了停止线程的方法都过时了, 需要时需要人为停止