31.多线程 Thread类

多线程
同时对多项任务进行控制。

  1. 继承Thread类
  2. 实现Runnable接口,可以实现资源共享

方法一

public class Music extends Thread{
//Alt+S 实现run方法
    @Override
    public void run() {
        // TODO 自动生成的方法存根
        for (int i = 0; i<1000; i++){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
            System.out.println("听音乐");
        }
    }   
}
public class Eat extends Thread{

    @Override
    public void run() {
        // TODO 自动生成的方法存根
        for (int i = 0; i<1000; i++){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
            System.out.println("吃饭");
        }
    }   
}
/**
     * 利用多线程实现一边吃饭一边听歌
     * @param args
     */
public class Demo1 {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        //music();
        //eat();
        Music musicThread =new Music();//new线程
        Eat eatThread =new Eat();
        musicThread.start();
        eatThread.start();

    }

}

方法二


public class Thread1 extends Thread{

    private int baozi = 1;
    private String threadName;

//给线程取名字
    public Thread1(String threadName) {
        super();
        this.threadName = threadName;
    }

    @Override
    public void run() {
        // TODO 自动生成的方法存根
        while (baozi<= 10) {
            System.out.println(threadName + "吃第"+baozi+"个包子" );
            baozi++;
        }
    }

    public static void main(String[] args) {
        Thread1 t1 = new Thread1("张三线程");//new线程
        Thread1 t2 = new Thread1("李四线程");
        t1.start();
        t2.start();
    }
}
张三线程吃第1个包子
李四线程吃第1个包子
张三线程吃第2个包子
李四线程吃第2个包子
张三线程吃第3个包子
李四线程吃第3个包子
张三线程吃第4个包子
李四线程吃第4个包子
张三线程吃第5个包子
李四线程吃第5个包子
张三线程吃第6个包子
李四线程吃第6个包子
张三线程吃第7个包子
李四线程吃第7个包子
张三线程吃第8个包子
李四线程吃第8个包子
张三线程吃第9个包子
李四线程吃第9个包子
张三线程吃第10个包子
李四线程吃第10个包子

方法三

//Runnable接口
public class Thread2 implements Runnable{

    private int baozi = 1;
    private String threadName;

    public Thread2(String threadName) {
        super();
        this.threadName = threadName;
    }


    public void run() {
        // TODO 自动生成的方法存根
        while (baozi<= 10) {
            System.out.println(threadName + "吃第"+baozi+"个包子" );
            baozi++;
        }
    }

    public static void main(String[] args) {
        Thread2 t1 = new Thread2("超级张三线程");//new线程

        //三个线程
        Thread t11 = new Thread(t1);
        Thread t12 = new Thread(t1);
        Thread t13 = new Thread(t1);
        t11.start();
        t12.start();
        t13.start();        
    }
超级张三线程吃第1个包子
超级张三线程吃第1个包子
超级张三线程吃第1个包子
超级张三线程吃第3个包子
超级张三线程吃第2个包子
超级张三线程吃第5个包子
超级张三线程吃第4个包子
超级张三线程吃第7个包子
超级张三线程吃第6个包子
超级张三线程吃第9个包子
超级张三线程吃第8个包子
超级张三线程吃第10个包子

使用synchronized:线程同步,同步后,多个线程无法同时进入run方法

//synchronized:线程同步
    public synchronized void run()……
超级张三线程吃第1个包子
超级张三线程吃第2个包子
超级张三线程吃第3个包子
超级张三线程吃第4个包子
超级张三线程吃第5个包子
超级张三线程吃第6个包子
超级张三线程吃第7个包子
超级张三线程吃第8个包子
超级张三线程吃第9个包子
超级张三线程吃第10个包子
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值