码迷,mamicode.com
首页 > 编程语言 > 详细

java创建线程两种方法

时间:2015-05-07 08:52:52      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:java   线程   

技术分享

/*
 进程:是一个正在执行中的程序
              每一个进程执行都有执行顺序,该顺序是一个执行路径,或叫控制单元

线程:就是进程中一个独立的控制单元
     线程在控制着进程的执行

一个进程至少包含一个线程

Java VM 启动时会有个进程java.exe
该进程中至少有一个线程复制java程序的执行,这个线程运行的代码存在于main方法中,
该线程称之为主线程
JVM启动不止一个线程,还有复制垃圾回收机制的线程


创建线程:(1)继承Thread类;复写run方法;创建对象,调用start方法
 (2)实现Runnable接口,复写run方法,建立线程对象,传递Runnable子类对象给Thread类构造函数

 */
package pack;

public class Main {

    public static void sys(Object obj) {
        System.out.println(obj);
    }

    public static void main(String[] args) {
        //method1();
        //method2(); //继承Thread方法创建线程,实例:4窗口卖票
        method3();//实现Runnable方法创建线程,实例:4窗口卖票
    }

    public static void method1() {
        Demo d1 = new Demo("one---"); //创建一个线程
        Demo d2 = new Demo("two---"); //创建一个线程
        d1.start();
        d2.start();
        for(int i=0;i<20;i++)
            sys("main run");
    }

    public static void method2() { 
        Ticket t1 = new Ticket();
        Ticket t2 = new Ticket();
        Ticket t3 = new Ticket();
        Ticket t4 = new Ticket();
        t1.start();
        t2.start();
        t3.start();
        t4.start();

    }

    public static void method3() {
        TicketDemo t = new TicketDemo();
        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);
        Thread t3 = new Thread(t);
        Thread t4 = new Thread(t);
        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}

class Demo extends Thread {
    Demo(String name) {
        super(name); //父类定义了getName方法,实现自定义线程名称,默认为Thread0,1
    }

    public void run() {
        for(int i=0;i<20;i++)
            //Main.sys(this.getName()+"demo run");
            //上下两句无差别,currentThread获取当前线程对象,即this
            Main.sys(Thread.currentThread().getName()+"demo run");
    }
}

class Ticket extends Thread {
    static int tickets = 200; //一共200张票,一定要static,4窗口公用200张
    public void run() {
        while(true) {
            if(tickets>0)
                Main.sys(this.getName()+"---"+tickets--);
        }

    }
}

class TicketDemo implements Runnable {
        int tickets = 100;
        public void run() {
            while(true) {
                if(tickets>0)
                    Main.sys(Thread.currentThread().getName()+"---"+tickets--);
            }

        }
    }

java创建线程两种方法

标签:java   线程   

原文地址:http://blog.csdn.net/sjtu_chenchen/article/details/45542117

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!