背景:本人跨语言比较多,最近都在用php开发,但是最喜欢的还是java。只是因为基础知识不是很扎实,用到java的东西也就是Swing/Android开发了。
  现在想实现的功能:
  public void functioins()
  {
    //比如这里是一个串口实例,实时监听串口然后处理
    ref();//界面更新
    play();//音乐播放
  }
  //那么如果是上面这种逻辑处理的话务必对效率产生影响。不知道是否可称为是单线程?因为是界面处理后(ref())
    它继续调用play();方法来播放音乐,那么当下次调用ref()来更新界面就需要一个时间(播放音乐play()的时间)。
    所以这样反复监听后其实效果是很差的。有没有什么方法来解决?能否多线程同步执行?现在就是希望播放音乐(play())的时候
    对ref()界面更新没有任何额影响。(2个步骤一定要有的)
    
    如今我想到的一个办法就是:
    1、ref()界面更新后把相应要播放的资料写入到本地(txt格式).
    2、把play()封装打包成exe可执行文件(右下角托盘+开机启动+不可最大化),使用Timer()定时器实时读取该文件夹,但是这样的话这个可执行文件一直都是在Timer()
      对电脑的资源占用有影响。而且Timer()的也没什么可优化的。有没有比我这个方法更好的。等待java同道支招。多谢.
Java

解决方案 »

  1.   

    首先java多线程是完全没问题的。
    你完全可以一个线程只跑更新界面的方法,一个线程只跑播放音乐的方法。
    两者之间只需要用标记位来控制同步就可以了。
      

  2.   

    实例呢?
    能否提供实例?
    比如
    public void functioins()
    {
        time();//定时输出当前的时间,比如每秒
         play();//播放音乐,比如:音乐时长多于2秒
    }
    //这样能否一边每秒输出时间,一边播放音乐。可能这种解释易读些
      

  3.   

    实例呢?
    能否提供实例?
    比如
    public void functioins()
    {
        time();//定时输出当前的时间,比如每秒
         play();//播放音乐,比如:音乐时长多于2秒
    }
    //这样能否一边每秒输出时间,一边播放音乐。可能这种解释易读些
      

  4.   


    class MyThread extends Thread{
      public int x = 0;  public void run(){
         ref();//界面更新
      }
    }class R implements Runnable{
      private int x = 0;
      public void run(){
       play();//音乐播放
      }
    }public class Test {
      public static void main(String[] args) throws Exception{
        
          Thread t = new MyThread();
          t.start();
          R r = new R();
          Thread t = new Thread(r);
          t.start();
      }
    网上挡了一个例子改了改,差不多就是这样。
    两种实现多线程的方法。