线程与多线程(二)——java实现多线程

二、 在Java中实现多线程

       每个程序至少自动拥有一个线程,称为主线程。当程序加载到内存时,启动主线程。Java 程序中的public static void main( )方法是主线程的人口,运行Java程序时,会先执行这个方法。
        开发中, 用户编写的线程般都是指除了主线程之外的其他线程。
        使用一个线程的过程,可以分为4个步骤:
        (1)定义一个线程,同时指明这个线程所要执行的代码,即期望完成的功能。
        (2)创建线程对象。
        (3)启动线程。
        (4)终止线程。
        定义一个线程类通常有两种方法,分别是继承java.lang.Thraed类和实现ava.lang.Runnable接口。

2.1使用Thread类创建线程

       Java提供了java.lang. Thread类支持名线程编程,该类提供了大量的方法来控制和操作线程,如表2-1所示。这些方法可以先初步了解,后面使用到时再深人学习。

                                                                    表2-1 Thread类常用方法

                           方法                                                                  说明
void run( )执行任务操作的方法
void start( )使该线程开始执行
void sleep(long millis)在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
String getName( )返回该线程的名称
int getPriority()返回线程的优先级
void setPriority(int newPriority)更改线程的优先级
Thread.State getState()返回该线程的状态
boolcean isAlive( )测试线程是否处于活动状态
void join( )等待该线程终止
void interrupt( )中断线程
void yield()暂停当前正在执行的线程对象,并执行其他线程

       创建线样时继承Thread 类并重写Thread类的run( )方法。Thread 类的run( )方法是线程要执行操作任务的方法,所以线程要执行的操作代码都需要写在run( )方法中,并通过调用start( )方法来启动线程。

示例1

       使用继承Thread类的方式创建线程,在线程中输出1~100的整数。
       实现步骤:
       (1)定义MyThread类继承Thread类,重写run( )方法, 在run( )方法中实现数据输出.
       (2)创建线程对象。
       (3)调用start( )方法启动线程。
       关键代码:  

//通过继承Thread类来创建线程
public class MyThread extends Thread{
        private int count=0;
        //重写run()方法
        public void run(){
            while (count<100) {
                count++;
                system.out.println ("count的值是: "+count);
            }
        }
} 
//启动线程
publlc class Test{
    public static vold main(String args){
        //实例化线程对象
        MyThread mt = new MyThread();        
        //启动线程
        mt.start();
    }
}

由示例1可以看出,创建线程对象时将不会开启线程,必须到用线是对象的start( )方法才能使线程开始执行。

2.2使用Runnable接口创建线程

       使用继承Thread类的方式创建线程简单明了,符合大家的习惯,但它也有一个缺点, 如果定义的类已经继承其他类则无法再继承Thread类。使用Runnable接口创建线程的方式可以解决上述问题。Runnable接口中声明了一个run( )方法,即public void run()。一个类可以通过实现 Runmable接口并实现其run( )方法完成线程的所有活动,已实现的run( )方法称为该对象的线程体。任何实现Runnable接口的对象都可以作为一个线程的目标对象。

示例2

       使用实现Runnable接口的方式创建线程,在线程中输出1~100的整数。
       实现步骤:
       (1)定义MyThread类实现java.lang.Runnable接口,并实现Runnable接口的run( )方法,在run( )方法中实现输出数据。
       (2)创建线程对象。
       (3)调用star( )方法启动线程,
       关键代码:
 

//通过实现Runnable楼口创建线程
publie class MyThread implements Runnable{
    private int count = 0;
    //实现run()方法
    public void run(){
        while (count<100){
            count++;
            System .out .printin("count的值是: "+count);
        }
    }
} 
//启动线程
public class Test{
    publie statie vold main(string args){
        //创建线程对象,将实现Runnable的线程类对象作为参数
        Thread thread = new Thread(new MyThread());
        //启动线程
        thread.start();
    }
}

       示例2中,通过Thread tread=new Thread(new MyThread( ))创建线程对象。
       两种创建线程的方式有各白的特点和应用领域:直接继承Thread类的方式编写简单,可以直接操作线程,适用于单重继承的情况;实现Runnable接口的方式,当一个线程继承了另一个类时,就只能用实现Runnable 接口的方法来创建线程,而且这种方式还可以使名个线程之间使用同一个Runnable对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值