JavaSE线程同步练习:从基础到进阶

需积分: 0 0 下载量 91 浏览量 更新于2024-08-04 收藏 67KB DOCX 举报
本资料主要涉及Java编程中的多线程和同步概念,是一份关于“线程、同步”的每日作业卷2。内容涵盖了线程的创建、运行、状态以及多线程协作的实践问题。 1. **线程的启动与运行** - `Thread`类中的`start()`方法用于启动线程,它会调用线程的`run()`方法。但是直接调用`run()`方法并不会启动新的线程,而是在当前线程中执行`run()`方法内的代码。 2. **创建线程的两种方式** - 继承`Thread`类:创建一个新的类,该类继承`Thread`,然后重写`run()`方法,最后创建该类的实例并调用`start()`方法启动线程。 - 实现`Runnable`接口:创建一个类实现`Runnable`接口,实现`run()`方法,然后将该类的实例作为参数传递给`Thread`类的构造函数,创建`Thread`对象并调用`start()`方法启动线程。 3. **线程名称的获取** - 使用`Thread.currentThread().getName()`可以获取当前线程的名称。在练习三中,要求分别使用继承`Thread`类和实现`Runnable`接口的方式创建线程,并打印出主线程和子线程的名称。 4. **实现Runnable接口的优势** - 避免了单继承的限制,因为Java不支持多继承,但可以实现多个接口。 - 提高了代码的复用性,因为`Runnable`对象可以被多个线程共享。 - 更加符合面向对象的设计原则,线程操作的对象和线程本身分离。 5. **线程状态** - Java线程有五种状态:新建(New)、可运行(Runnable)、运行(Running)、阻塞(Blocked)和终止(Terminated)。 6. **多线程协作** - 在练习六中,要求在主线程中循环输出“主线程执行”,在子线程中循环输出“子线程执行”。这涉及到线程的并发执行,可以通过`Thread.sleep()`方法控制线程交替输出。 7. **匿名内部类实现多线程** - 练习七要求创建两个线程,一个输出“播放背景音乐”,另一个输出“显示画面”,使用匿名内部类实现`Runnable`接口,可以直接在创建`Thread`对象时定义`Runnable`的行为。 8. **多线程同步执行** - 练习八要求两个线程循环执行20次,可能需要考虑线程同步,确保每个线程执行次数的准确性,可以使用`synchronized`关键字或者`wait()`和`notify()`方法来控制线程间的协作。 9. **多线程同步问题** - 练习九模拟多人过山洞的问题是一个典型的生产者消费者模型,需要使用同步机制(如`synchronized`或`Semaphore`)来保证每次只有一个线程能执行过山洞的操作,并记录通过顺序。可以使用`Random`类生成随机的人名,结合`Thread.sleep()`模拟等待时间。 以上就是Java多线程与同步相关的知识点,这些练习有助于深入理解和掌握Java线程的使用和管理。