01-多线程
package cn.itcast.demo.po; public class TradictionalThred { public static void main(String[] args) { // 1. 传统线程创建方式1 Thread thread = new Thread() { @Override public void run() { while (true) { try { Thread.sleep(1000); String name = Thread.currentThread().getName(); System.out.println("1:"+name); } catch (Exception e) { e.printStackTrace(); } } } }; thread.start(); // 2. 传统线程创建方式2 Thread thread2 = new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(1000); String name = Thread.currentThread().getName(); System.out.println("2:"+name); } catch (Exception e) { e.printStackTrace(); } } } }); thread2.start(); // 3. 传统线程创建方式3 new Thread(new Runnable() { // 这是匿名内部类的对象中的方法,如果没有3-1的run方法(即不改写父类的方法),就调用3-2中的方法,如果有3-1的方法(即改写了父类的方法,就执行3-1的方法) @Override public void run() { while (true) { try { Thread.sleep(1000); String name = Thread.currentThread().getName(); System.out.println("3-2:"+name); } catch (Exception e) { e.printStackTrace(); } } } }){ // 这是匿名内部类的方法(由于这里改写了父类的run方法,所以只执行3-1的方法,而不执行3-2的方法,如果不该写3-1的run方法,就执行3-2的run方法) public void run() { while (true) { try { Thread.sleep(1000); String name = Thread.currentThread().getName(); System.out.println("3-1:"+name); } catch (Exception e) { e.printStackTrace(); } } }; }.start(); } }
运行结果:
1:Thread-0
2:Thread-1
3-1:Thread-2
1:Thread-0
2:Thread-1
3-1:Thread-2
1:Thread-0
2:Thread-1
3-1:Thread-2
2:Thread-1
1:Thread-0
3-1:Thread-2
2:Thread-1
1:Thread-0
3-1:Thread-2
2:Thread-1
1:Thread-0
3-1:Thread-2
.........
.........