java线程

 创建线程有两种方法:
     1、继承Thread类
     2、实现Runnable接口
 
为什么还有第二种方法?
     因为有的时候某个类已经有了父类就不能在继承线程类,那么为了解决单继承的局限性
     就可以在实现Runnable接口来被线程调用。
 
创建线程的第一种方法:继承Thread类:
步骤:
1、创建类继承Thread
2、覆盖run()方法。
3、调用statrt方法
     start()方法有两个作用
          1.启动线程,2.调用run方法
     那么如果没有调用start方法,直接调用run方法,那么不会实现线程交替的执行
     而是将该run方法执行完之后再执行main方法中run之后的代码,不能达到多线程交替执行的效果
 
 1 //代码演示:
 2 public class Demo3 extends Thread{
 3      @Override
 4      public void run() {
 5           //run方法中要进行的操作
 6      }
 7      public static void main(String[] args) {
 8           Demo3 demo3 = new Demo3();
 9           demo3.start();
10      }
11 }

 

创建线程的第二种方法:继承Runable接口:
步骤:
     1、创建一个类实现Runnable接口
     2、覆盖接口中的run方法
     3、在main方法中创建Thread类对象,创建自定义线程类对象,将其作为参数传入Thread类对象中,
     4、同样,用Thread类对象调用start方法。
 
 1 //代码演示:
 2 //自定义类实现Runnable接口
 3 public class ThreadDemo implements Runnable {
 4      //创建线程的第一种方式:继承Thread类
 5      private int ticket =100;
 6      Object object = new Object();
 7      @Override
 8      public void run() {
 9           while(true) {
10               synchronized (object) {
11                    if (ticket>0) {
12                         try {
13                              Thread.sleep(10);
14                         } catch (Exception e) {
15                         }
16                         System.out.println(Thread.currentThread().getName()+"-----"+ticket--);
17                    }
18               }
19           }
20      }
21 }
22 //执行类,三个线程同时执行,模拟一个买票的过程
23 public class Test {
24           public static void main(String[] args) {
25               ThreadDemo threadDemo = new ThreadDemo();
26               Thread thread = new Thread(threadDemo);
27               Thread thread2 = new Thread(threadDemo);
28               Thread thread3 = new Thread(threadDemo);
29               thread.start();
30               thread2.start();
31               thread3.start();
32           }
33 }
posted @ 2017-09-01 21:26  赵安之  阅读(156)  评论(0编辑  收藏  举报