Java多线程(~11.18)

来源:互联网 发布:c 手机软件编程 编辑:程序博客网 时间:2024/06/08 16:01

1、为了模拟现实生活中很多事情都是同时进行的这种状态,引入了线程机制,多线程使用相当广泛,使用它可以创建窗口程序、网络程序等。

2、Java主要提供两种方式实现线程:继承java.lang.Thread与实现java.lang.Runnable接口。

3、Thread:当执行一个线程程序时,就自动产生一个线程,主方法正是在这个线程上运行的,当不再启动其他线程时,该程序就成为单线程程序。主方法启动由Java虚拟机负责,程序员负责启动自己的线程。在主方法没有调用start()方法之前,Thread对象只是一个实例,而不是一个真正的线程。

4、线程都是通过扩展Thread类来创建的,如果程序员需要继承其他类(非Thread类),而且还要使当前类实现多线程,那么可以通过Runnable接口来实现。

5、线程的生命周期:出生状态(Thread t=new Thread();)、就绪状态(t.start())、运行状态、等待状态(t.wait())、休眠状态(t.sleep()醒来进入就绪状态)、阻塞状态和死亡状态。

6、虽然线程看起来像是同时执行,但事实上在同一时间点上只有一个线程被执行,只是线程之间切换较快。。。在Windows操作系统中,系统会给每个线程分配一小段CPU时间片,一旦CPU时间片结束就会将当前线程转换为下一个线程,即使该线程没有结束。

7、用Thread类中的join()方法来插入线程B。在线程A的run()方法中使线程B的对象调用join()方法,而join()方法使现在的线程暂停,直到调用join()方法的线程执行完毕后再执行,所以线程执行完毕后再执行。

8、在run方法中使用无限循环的形式,然后使用一个布尔型标记控制循环的停止。

9、线程的Thread类提供了一种礼让的方法yield(),但是仅仅是一种暗示,没有任何一种机制保证当前线程会将资源礼让。yield()方法使具有同样优先级的线程有进入可执行状态的机会,当当前线程放弃执行权时会再度回到就绪状态,对于支持多任务的操作系统来说,不需要调用此方法,因为操作系统会为线程自动分配CPU时间片来执行。


原创粉丝点击