活动地址:CSDN21天学习挑战赛
目录
创建线程的方式二
1,实现Runnable接口
1、创建一个实现了Runnable接口的类
2、实现类去实现Runnable中的抽象方法:run()
3、创建实现类的对象
4、将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
5、通过Thread类的对象调用start()
2,举例
//1、创建一个实现了Runnable接口的类 class MThread implements Runnable{ // 2、实现类去实现Runnable中的抽象方法:run() @Override public void run() { for (int i = 0; i < 100; i++) { if (i % 2 == 0){ System.out.println(Thread.currentThread().getName() + ":" + i); } } } } public class Test1 { public static void main(String[] args) { // 3、创建实现类的对象 MThread m1 = new MThread(); // 4、将此对象作为参数传递到Thread类的构造器中,创建Threa类的对象 Thread t1 = new Thread(m1); t1.setName("线程一"); // 5、通过Thread类的对象调用start():a、启动线程 // b、调用当前线程的run()-->其实是调用了Runnable类型的target的run() t1.start(); //再启动一个进程遍历100以内的偶数 Thread t2 = new Thread(m1); t2.setName("线程二"); t2.start(); } }
**
比较创建线程的两种方式
开发中优先选择:实现Runnable接口的方式
原因:
1、实现的方式没有类的单继承性的局限
2、实现的方式更适合来处理多个线程有共享数据的情况
联系:Thread类实现了Runnable public class Thread implements Runnable
相同点:两点方式都需要重写run(),将线程要执行的逻辑声明在run()中
**
线程的生命周期和安全问题
**
1,线程的生命周期
2,线程的安全问题
多个线程执行的不确定性引起的执行结果的不稳定
多个线程对账本的共享会造成操作的不完整性,会破坏数据
提醒:在发布作品前请把不用的内容删掉(活动地址请保留)
本文含有隐藏内容,请 开通VIP 后查看