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

多线程2

时间:2014-12-06 20:15:16      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   color   使用   sp   on   div   

进程:正在执行的应用程序。一个应用程序运行时内存分配的空间。
线程:进程中一个程序执行的控制单元,一条执行路径。负责程序的执行顺序。 作用:1.启动线程 2.运行run方法。目的是将自定义的代码存储在run方法中,让线程运行 cpu每次只执行一个程序,只是在快速的不同线程间切换,表现了多线程的随机性

示例: 模拟火车站四个售票窗口同时开通售票、票数20张、预计全部售完的情况。
第一种创建线程的方式
class Mlpc extends Thread //第一步、定义类继承Thread类
{
    private int ticket = 20;

    public void run() //第二步、覆写run方法,把需要被现场运行的代码都写在其中
    {
        while(true)
        {
            if(ticket>0)
            {
                System.out.println(Thread.currentThread()+"  "+ticket--);
            }
        }
    }
}
 class mlpcDemo 
{
    public static void main(String[] args) 
    {
        Mlpc m1 = new Mlpc();//第三步、通过创建Thread类的子类对象,创建了线程对象。
        Mlpc m2 = new Mlpc();
        Mlpc m3 = new Mlpc();
        Mlpc m4 = new Mlpc();

        m1.start();//第四步、调用start方法,开启线程,执行run方法
        m1.start();
        m1.start();
        m1.start();
    }
}

bubuko.com,布布扣
 很明显,结果会出现四条线程‘各自为营’,各卖20张票的情况。

以上结果肯定不符合要求,于是我们使用第二种创建线程的方式。

class Mlpc implements Runnable//第一步、定义类实现Runnable接口
{
    private int ticket = 20;

    public void run() //第二步、覆盖接口run方法,封装线程要运行的代码
    {
        while(true)
        {
            if(ticket>0)
            {
                System.out.println(Thread.currentThread()+"  "+ticket--);
            }
        }
    }
}
 class mlpcDemo 
{
    public static void main(String[] args) 
    {
        Mlpc m = new Mlpc();
Thread th0 = new Thread(m);//第三步、通过Thread类  创建了线程对象。 Thread th1 = new Thread(m); Thread th2 = new Thread(m); Thread th3 = new Thread(m); th0.start();//第四步、调用start方法,开启线程,执行run方法 th1.start(); th2.start(); th3.start(); } }

 bubuko.com,布布扣

这样就对了。

run方法和 start方法

run方法 仅仅是对象调用方法,并没有运行线程 start方法 是开启线程并且执行线程中的run方法

多线程2

标签:style   blog   http   ar   color   使用   sp   on   div   

原文地址:http://www.cnblogs.com/tozr/p/4148652.html

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