- public class Demo {
- public static void main(String[] args)
- {
- /*
- * 每个线程拥有自己的对象
- */
- Threadd1 t1 = new Threadd1();
- Threadd1 t2 = new Threadd1();
- Threadd1 t3 = new Threadd1();
- t1.start();
- t2.start();
- t3.start();
-
- /*
- * 多条线程在操作同一个对象,可实现资源的共享,但要考虑同步
- */
- Threadd2 tt = new Threadd2();
- tt.start();
- Thread tt1 = new Thread(tt);
- Thread tt2 = new Thread(tt);
- Thread tt3 = new Thread(tt);
- tt1.start();
- tt2.start();
- tt3.start();
- }
- }
- class Threadd1 extends Thread{
- public void run(){
- System.out.println("Thread,线程要运行的代码");
- }
- }
- class Threadd2 implements Runnable{
- public void run(){
- System.out.println("Runnable,线程要运行的代码");
- }
- public void start(){
- System.out.println(Thread.currentThread().getName()+"这是开启线程么?"); //输出:main这是开启线程么?
- }
- }
复制代码 1,继承Thread类,每创建一个线程,就会有一个对应的对象产生。
2,Runnable接口内部就定义了一个run方法,也就是说,如果类实现Runnable接口,不能通过像继承Thread类那样,通过start开启线程(内部没有start方法,即便自定义,也属功能调用,调用该功能的也是main线程),所以,就需要将其子类对象传递给Thread类的构造函数,可以实现多条线程在操作同一个对象。当然,你也可以像继承Thread类那样,new一个对象,传递给Thread的构造函数,开启一个线程,只不过,这样就很麻烦。
|