zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    LeetCode 9. Palindrome Number(回文数)
    POJ 1080 Human Gene Functions
    springcloud之gateway
    canal快速入门
    Java8新特性
    vue整合echarts
    vue整合微信支付
    Thymeleaf快速入门
    vue整合阿里云播发器
    vue之vuex
  • 原文地址:https://www.cnblogs.com/anzhi/p/7465135.html
Copyright © 2011-2022 走看看