您的位置:首页 > 编程语言 > Java开发

Java基础03——多线程<一>

2015-08-25 11:15 489 查看
------- android培训java培训、期待与您交流!
----------

如何创建一个线程

方法一:继承Thread类

步骤:

1. 定义一个类继承Thread类

2. 覆盖Thread类的run方法

目的:将自定义代码存储在run()方法,让线程运行

3. 直接创建Thread的子类对象创建线程

4. 调用start方法开启线程并调用线程的任务run方法执行

现象:运行结果每一次都不对

原因:由于多个线程获取cpu的执行权才可运行,单核cpu下,在某个时刻,只能有一个程序运行,而cpu快速切换,以达到看上去同时运行的效果。===多线程的随机性

class Demo extends Thread
{

public void run()
{
for(int i=0; i<60; i++)
System.out.println("Demo run" + i);
}
}

public class ThreadDemo {

public static void main(String[] args)
{
Demo d = new Demo();
d.start(); //开启线程并执行线程的run方法
//d.run(); //仅仅是对象调用方法,而线程创建了,并没有运行
for(int i=0; i<60; i++)
{
System.out.println("hello" + i);
}
}
}


线程默认名称:Thread-编号(从0开始)

static Thread curentThread():获取当前线程对象

getName():获取线程名称

setName():设置名称
方法二:实现Runnable接口

步骤:

1. 定义类实现Runnable接口

2. 覆盖Runnable接口的run方法

将线程要运行的代码存放在该run方法中

3. 通过Thread类建立线程对象

4. 将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数

原因:自定义的run方法所属的对象是Runnable接口的子类对象。所以要让线程去指定指定对象的run方法,就必须明确该run方法所属对象。

5. 调用Thread类的start方法开启线程并调用Runnable接口子类的run方法

实现方式和继承方式的区别?

继承Thread:线程代码存放在Thread子类run方法中

实现Runnable:线程代码存放在接口的子类run方法中

实现方式的好处:避免了单继承的局限性

[java] view
plaincopy

<span style="font-size:12px;">class Ticket implements Runnable  

{  

    private int ticket = 100;  

      

    public void run()  

    {  

        while(true)  

        {  

            if(ticket>0)  

                System.out.println(Thread.currentThread().getName() + "....sales : " + ticket--);  

        }  

    }  

}  

  

public class ThreadDemo {  

  

    public static void main(String[] args)  

    {  

        Ticket t = new Ticket();  

        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();  

    }  

}</span>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: