建立线程的两种方法:java
继承thread类:ide
1>定义类继承Thread。2>复写Thread类中的run方法。spa
目的:将自定义代码存储在run方法。让线程运行。线程
3>调用线程的start方法,该方法两个做用:启动线程,调用run方法。code
class ThreadTest extends Thread{ @Override public void run() { // TODO Auto-generated method stub while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName()); } } }
该类就定义了一个功能,用于存储线程要运行的代码。该存储功能就是run方法。对象
也就是说Thread类中的run方法,用于存储线程要运行的代码继承
2.实现runnable接口接口
1>定义类实现Runnable接口get
2>覆盖Runnable接口中的run方法,将线程要运行的代码存放在该run方法中。io
3>经过Thread类创建线程对象。
class Ticket implements Runnable//extends Thread { private int tick = 100; public void run() { while(true) { if(tick>0) { System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--); } } } }
或者new Thread(new Runnable( run(){} )).start(); //将其做为参数传递给Thread类
实现方式好处:避免了单继承的局限性。
在定义线程时,建议使用实现方式。
两种方式区别:
继承Thread:线程代码存放Thread子类run方法中。
实现Runnable,线程代码存在接口的子类的run方法。