1.创建多线程的两种方式
来源:互联网 发布:js继承 编辑:程序博客网 时间:2024/05/28 18:42
1.在Thread子类覆盖的run方法中编写运行代码
Thread t1 = new Thread(){public void run() {while(true){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("t1:"+Thread.currentThread().getName());//this代表run方法所在的对象,即t1//System.out.println("t1:"+this.getName());}}};t1.start();
不能在run方法声明上抛出InterruptedException异常,以便省略run方法内部对Thread.sleep()语句的try…catch处理2.在传递给Thread对象的Runnable对象的run方法中编写代码
Thread t2 = new Thread(new Runnable(){public void run() {while(true){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("t2:"+Thread.currentThread().getName());}}});t2.start();
问:为什么都是采用Runnable这种方式创建线程?答:体现了面向对象性, 因为run()方法在Runnable对象里面和Thread对象解耦
3.看如下代码,会输出什么结果?
new Thread(new Runnable(){public void run() {while(true){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("Runnable:"+Thread.currentThread().getName());}}}){public void run() {while(true){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("Thread:"+Thread.currentThread().getName());}}}.start();
输出结果:Thread:Thread-2
原因是:只会运行子类的run()方法,因为根据源码是先看子类有没有run()方法, 如果有,就覆盖父类的run()方法。所以执行子类的run()方法,如果子类没有run()方法,就运行构造器里的Runnable()的run()方法。 1 0
- 1.创建多线程的两种方式
- 多线程 创建线程的两种方式
- Java创建多线程的两种方式
- 创建多线程的两种方式
- 两种方式创建多线程
- 多线程的安全问题。 创建线程的两种方式区别
- java例程练习(多线程的两种创建方式)
- 多线程的创建两种方式和区别
- Java---11---多线程的两种创建方式
- 多线程-01,创建线程的两种方式
- Java创建多线程的两种方式对比
- Java基础:多线程之线程创建的两种方式
- java多线程之创建线程的两种传统方式
- java多线程01:创建线程的两种传统方式
- Java多线程:创建线程的两种实现方式
- java基础5-创建多线程的两种方式
- 多线程:初识线程,以及创建线程的两种方式
- 【JAVA多线程】-线程的两种创建方式及比较
- 入门级dp2
- P1862
- SpringBoot+Mybatis整合报,service注入失败,dao注入失败,
- Qt学习笔记2—串口通信
- 【密码学】AES加密算法图解
- 1.创建多线程的两种方式
- Linux系统串口接收数据编程
- 笔记:Android用户界面--(二)
- 3.如何为Eclipse安装主题(Color Theme)
- Mode层
- Myeclipse 2015+ 破 解
- HTML5小标签补充
- 采用easyX插件进行C语言编写的贪吃蛇,自带播放音乐
- Fragment之间传值用接口回掉