拼图游戏java(四)实现拼图与播放音乐双线程

* 多线程显示
 * 建立一个线程
 * 在定义类时,若该类将要作为线程执行的一个任务,则定义时需要实现Runnable接口
 * 重写run方法
 * 新建一个类A的实例,即相当于一个新的任务
 * 新建一个Thread类的实例t,在新建是将类A的实例,作为参数传进去
 * 启动线程t,即t.strat,即开启一个线程,交由cpu调度执行
 * 当一个线程被开始调度执行时,会自动执行线程所做任务的run方法,
 * run方法执行结束,则该线程也随之结束

public class MyPlayer implements Runnable {//创建MyPlayer实现Runnable接口
    private Player player;//定义player对象
    @Override
    public void run() {//重写run方法
        // TODO Auto-generated method stub
        try {
            try {
                player = new Player(new FileInputStream("jiangnan.mp3"));//初始化player
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            player.play();//播放音乐
            System.out.println("本歌曲播放完毕");
        } catch (JavaLayerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

在面板类(业务逻辑实现)中

MyPlayer m1 = new MyPlayer(); // 新建一个Thread类的实例t,在新建是将类MyPlayer的实例,作为参数传进去

    public void mouseClicked(MouseEvent e) {//点击按钮如果没有播放,新建实例调用run播放
        
        // TODO Auto-generated method stub
        if(!isPlaying){//如果没有播放
            Thread t = new Thread(m1);
            t.start();
            isPlaying = true;
            btnPlayControl.setText("停止播放");
        }else{
            m1.stop();//如果播放,调用实例(不是线程实例)stop方法
            isPlaying = false;
            btnPlayControl.setText("播放音乐");
            

        }

 

 

在MyPlayer中新建

    public void stop() {
        // TODO Auto-generated method stub
        player.close();//结束线程中的任务,线程也随之结束
        
    }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值