Java多线程之实现方式

一、介绍

多线程的好处是解决了一个进程能同时执行多个任务的问题和提高了资源的利用率,缺点是增加cpu的负担、引发了线程安全问题、降低了一个进程中线程的执行概率、出现了死锁现象等,尽管多线程有一定的缺点,不过总的来说多线程的实现是利大于弊的。


二、多线程的实现

(1)实现Runnable接口
下面以一个简单的多窗口售票程序来演示实现Runnable接口的多线程的实现

public class Tickets implements Runnable{
    public static int tickets=10;//10张票 
    @Override
    public void run() {
        while(true) {
            synchronized ("aa") {//加重量锁实现线程安全
                if(tickets>0) {
                    System.out.println(Thread.currentThread().getName()+"第"+tickets+"张票");
                    tickets--;
                }else {
                    System.out.println("票售尽");
                    break;
                }
            }           
        }
    }
}

测试:

public static void main(String[] args) {
        Tickets tickets = new Tickets();
        Thread thread1 = new Thread(tickets);//创建线程
        Thread thread2 = new Thread(tickets);
        Thread thread3 = new Thread(tickets);
        thread1.start();//启动线程
        thread2.start();
        thread3.start();
    }

实现效果:
线程实现
(2)继承Thread类

public class Tickets extends Thread{
    public static int tickets=10;//10张票 
    @Override
    public void run() {
        while(true) {
            synchronized ("aa") {//加重量锁实现线程安全
                if(tickets>0) {
                    System.out.println(Thread.currentThread().getName()+"第"+tickets+"张票");
                    tickets--;
                }else {
                    System.out.println("票售尽");
                    break;
                }
            }           
        }
    }
}

测试:

public static void main(String[] args) {
        Tickets ticket1 = new Tickets();//创建线程
        Tickets ticket2 = new Tickets();
        ticket1.start();//启动线程
        ticket2.start();
    }

效果:
实现方式


以上便是多线程的二种实现方式,注意效果图展示的执行结果不唯一。

总结:两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,而实现是多实现,如果继承了Thread类就无法再继承其他类了,而采用实现Runnable接口则更为灵活。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值