首页 > 代码库 > Java 多线程Thread和Runnable

Java 多线程Thread和Runnable

Thread:

class MyThread extends Thread{    private int ticketsCont=5; //一共有5张火车票    private String name; //窗口, 也即是线程的名字    public MyThread(String name){        this.name=name;    }    @Override    public void run(){        while(ticketsCont>0){            ticketsCont--; //如果还有票,就卖掉一张票            System.out.println(name+"卖掉了1张票,剩余票数为:"+ticketsCont);        }    }}public class TicketsThread{    public static void main(String args[]){        //创建三个线程,模拟三个窗口卖票        MyThread mt1=new MyThread("窗口1");        MyThread mt2=new MyThread("窗口2");        MyThread mt3=new MyThread("窗口3");        //启动三个线程,也即是窗口,开始卖票        mt1.start();        mt2.start();        mt3.start();    }}
技术分享
窗口1卖掉了1张票,剩余票数为:4窗口1卖掉了1张票,剩余票数为:3窗口1卖掉了1张票,剩余票数为:2窗口1卖掉了1张票,剩余票数为:1窗口1卖掉了1张票,剩余票数为:0窗口3卖掉了1张票,剩余票数为:4窗口2卖掉了1张票,剩余票数为:4窗口3卖掉了1张票,剩余票数为:3窗口3卖掉了1张票,剩余票数为:2窗口3卖掉了1张票,剩余票数为:1窗口3卖掉了1张票,剩余票数为:0窗口2卖掉了1张票,剩余票数为:3窗口2卖掉了1张票,剩余票数为:2窗口2卖掉了1张票,剩余票数为:1窗口2卖掉了1张票,剩余票数为:0
View Code

Runnable接口:

class MyThread2 implements Runnable{    private int ticketsCont=5; //一共有5张火车票    @Override    public void run(){        while(true){            synchronized(this){                if(ticketsCont<=0){                    break;                }                ticketsCont--; //如果还有票,就卖掉一张票                System.out.println(Thread.currentThread().getName()+"卖掉了1张票,剩余票数为:"+ticketsCont);                    /*try{                        Thread.sleep(50);  //通过阻塞程序来查看效果                    }                    catch(Exception e){                        System.out.println(e);                    }*/            }        }    }}public class TicketsRunnable{    public static void main(String args[]){        MyThread2 mt=new MyThread2();        //创建三个线程来模拟三个售票窗口        Thread th1=new Thread(mt,"窗口1");        Thread th2=new Thread(mt,"窗口2");        Thread th3=new Thread(mt,"窗口3");        //启动三个线程,也即是三个窗口,开始卖票        th1.start();        th2.start();        th3.start();    }}
技术分享
窗口1卖掉了1张票,剩余票数为:4窗口1卖掉了1张票,剩余票数为:3窗口1卖掉了1张票,剩余票数为:2窗口1卖掉了1张票,剩余票数为:1窗口1卖掉了1张票,剩余票数为:0
View Code

Thread类是多个线程分别完成自己的任务,Runnable是多个线程共同完成一个任务。

建议使用Runnable这种方式创建线程。 程序中的同一资源指的是同一个Runnable对象。安全的卖票程序中需要加入同步synchronized。

 

http://www.cnblogs.com/Li-Cheng/p/4332179.html

Java 多线程Thread和Runnable