1.Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线程,有两种方法:
需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法;
实现Runnalbe接口,重载Runnalbe接口中的run()方法。
2. 同步多线程(SMT)是一种在一个CPU 的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上,同步多线程是一种将线程级并行处理(多CPU)转化为指令级并行处理(同一CPU)的方法。同步多线程是单个物理处理器从多个硬件线程上下文同时分派指令的能力。同步多线程用于在商用环境中及为周期/指令(CPI)计数较高的工作负载创造性能优势。处理器采用超标量结构,最适于以并行方式读取及运行命令。同步多线程使您可在同一处理器上同时调度两个应用程序,从而利用处理器的超标量结构性质。
3. 线程的调度与控制2. 同步多线程(SMT)是一种在一个CPU 的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上,同步多线程是一种将线程级并行处理(多CPU)转化为指令级并行处理(同一CPU)的方法。同步多线程是单个物理处理器从多个硬件线程上下文同时分派指令的能力。同步多线程用于在商用环境中及为周期/指令(CPI)计数较高的工作负载创造性能优势。处理器采用超标量结构,最适于以并行方式读取及运行命令。同步多线程使您可在同一处理器上同时调度两个应用程序,从而利用处理器的超标量结构性质。
start()启动线程进入可运行状态(Runnable)
stop()停止线程进入消亡状态(Dead) //已过时,5.0以后不再支持
sleep()线程睡眠进入冻结状态(Blocked)
wait()
join()——临时加入线程;抢夺CPU执行权,执行完毕后才轮到其他线程,,,插队
当A线程执行到了B线程的join()方法时,A就会等待,等B线程执行完A才会执行
会抛出InterruptedException
4.interrupt()停止线程(的冻结状态)
多线程通常使用循环结构,只要控制住循环就能使run()方法结束,从而结束线程
当线程处于冻结状态就读取不到标记;wait() join() sleep()都会导致冻结状态;不结束冻结状态程序就不能停止
当没有指定方式(notify,signal等)使线程恢复到运行状态时。就需要对冻结状态进行清除
5. java的 线程调度是不分时的,同时启动多个线程后,不能保证各个线程轮流获得均等的CPU时间片。如果希望明确地让一个 线程给另外一个线程运行的机会,可以采取以下办法之一。
调整各个 线程的优先级
让处于运行状态的 线程调用Thread.sleep()方法
让处于运行状态的 线程调用Thread.yield()方法
让处于运行状态的 线程调用另一个线程的join()方法
线程切换:不是所有的线程切换都需要进入内核模式