前面讲解了实现多线程的两种方式,一是继承Thread类方式,二是实现Runnable接口方式。在一定条件下,我们也可以采用匿名内部类的方式方便地创建多线程。对应匿名内部类创建多线程有如下两种方式:
(1)对应继承Thread类方式的匿名内部类实现:
其中,代码部分包括重写run方法,里面包含要完成的任务。
(2)对应实现Runnable接口方式的匿名内部类实现:
其中,代码部分包括重写run方法,里面包含要完成的任务。
【例6-13】
使用匿名内部类实现多线程。
在chapter6工程src文件夹下新建一个包cn.linaw.chapter6.demo11,在包里创建测试类AnonymousInner Classes Thread Test,如图6-39所示。
图6-39 匿名内部类方式实现多线程
项目总结(www.xing528.com)
Java支持多线程开发。本项目首先介绍了程序、进程和线程的联系和区别,接着介绍了创建多线程的两种方式——继承Thread类和实现Runnable接口,讲解了线程从创建到死亡所经历的生命周期。线程在提升效率的同时也带来了同步问题,本项目讲解了解决同步问题的两种方法——同步方法和同步代码块。不同线程之间可能需要通信,这就涉及线程间通信问题,本项目利用Object类的wait方法、notify方法和notify All方法实现了经典的生产者和消费者问题,是多线程的难点所在。本项目接着讲解了线程池的使用,目的是避免频繁创建和注销线程,最后讲解了JDK中定时任务调度实现,以及使用匿名内部类方式实现多线程。本项目内容总体难度较大,需要认真体会。
项目作业
1.简述程序、进程和线程的区别。
2.简述创建线程的两种方式。
3.Thread类中的start()方法和run()方法有什么区别和联系?
4.简述线程的几种状态,以及相互之间如何转换。
5.简述sleep、yield和join方法的区别。
6.简述线程同步的原因和线程同步的方法。
7.简述线程通信中wait、notify、notify All方法的作用。
8.设计一个多线程实现的卖火车票的简易程序。例如有100张票,在2个窗口同时卖出,打印各个窗口的售票情况。要求采用继承Thread类和实现Runnable接口两种方式实现。提示:注意synchronized关键字的用法,使用的锁必须是同一个对象。
9.上机实践书中出现的案例,可自由发挥修改。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。