1.继承Thread类
定义类继承Thread, 重写run()方法, 将线程中要执行的代码写在run()方法中
创建该类对象, 调用start()方法就可以开启一条新线程, 新线程中自动指定run()方法
2.实现Runnable接口
定义类实现Runnable接口, 重写run()方法, 将线程中要执行的代码写在run()方法中
创建该类对象, 创建Thread类对象, 将Runnable对象传入Thread的构造函数中
调用Thread对象的start()方法就可以开启一条新线程, 新线程中执行Runnable的run()方法
通信
1.为什么要通信
多线程并发执行的时候, 如果需要指定线程等待或者唤醒指定线程, 那么就需要通信.
2.怎么通信
在同步代码块中, 使用锁对象的wait()方法可以让当前线程等待, 直到有其他线程唤醒为止.
在同步代码块中, 使用锁对象的notify()方法可以唤醒一个等待的线程. |