-
3)匿名内部类
-
4)使用lambda表达式来创建
-
二、了解Thread 类
-
- 2.1Thread的常见的构造方法
-
2.2Thread的几个常见的属性
-
三、启动一个线程
-
四、中断一个线程
-
- 4.1 让线程的入口方法执行完毕
-
4.2 使用Thread类提供的interrupt方法
-
五、等待线程
-
六、线程休眠
-
七、线程的状态
-
八、线程安全(重要)!!!
-
- 8.1导致线程不安全的原因:
-
8.2解决线程安全问题方法
-
- synchronized
-
volatile
-
九、对象等待集
=============================================================================
利用多态机制,继承于Thread机制
**1)创建一个子类,继承于Thread
2)重写run 方法
3)创建子类实例
4)调用start 方法**
public class Demo {
//创建多线程
public static void main(String[] args) {
MyThread2 myThread2=new MyThread2();
myThread2.start();
}
}
class MyThread2 extends Thread{
@Override
public void run() {
//这里写线程要执行的代码
}
}
通过实现Runnable 接口,把Runnable 接口的实例赋值给Thread
**1)定义Runnable接口的实现类
2)创建Runnable实现类的实例,并用这个实例作为Thread的target来创建Thread对象,这个Thread对象才是真正的线程对象
3)调用start () 方法**
public class Demo {
//创建多线程
public static void main(String[] args) {
//通过Runnable 接口来创建
Runnable myTask=new MyTask();
Thread t=new Thread();
t.start();
}
}
class MyTask implements Runnable{
@Override
public void run() {
//重写run()方法
}
}
Runnable 本质上还是要搭配Thread来使用,只不过和直接继承Thread相比,换了一种指定任务的方式而已
这两种方式中Runnable 方式更好一点,能够让线程本身,和线程要执行的任务,更加“解耦合”
通过匿名内部类相当于继承了Thread,作为子类重写run()实现
public class Demo {
//创建多线程
public static void main(String[] args) {
//通过匿名内部类来实现
Thread t=new Thread(){
@Override
public void run() {
//重写run方法
}
};
t.start();
}
}
通过Runnable 匿名内部类来实现
public class Demo {
//创建多线程
public static void main(String[] args) {
//通过匿名内部类来实现
Thread t=new Thread(new Runnable() {
@Override
public void run() {
//重写run方法
}
});
t.start();
}
}
public c