求助帖,关于线程,socket,sigar
主要是完成一个从被监控端收集CPU信息,然后通过socket发送到监控端的过程。被监控端的窗口上有两个按钮,开始和暂停。按下开始开启线程,每秒提取CPU信息并发送,按停止希望能关闭线程。但我线程没学好,开启后锁死在那了,其他按钮按不动了,求帮助,这里怎么搞。部分代码如下:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
		p = true;
		/*s();*/
		while(p){
			try{Thread.sleep(2000);}
			catch(Exception e){}
			start();
		}
	}
public void start(){
	  //建立联网线程
	   new Thread(new Runnable(){
	   public void run() {
	    try {
	    	s=new Socket("127.0.0.1",5555);
	     //写
		  	Sigar sigar = new Sigar();
		  	Mem mem = sigar.getMem();
		  	CpuPerc cpuCerc = sigar.getCpuPerc();
		  	q = cpuCerc.getCombined()*100 + "%;" + cpuCerc.getUser()*100 + "%;"
		  	+cpuCerc.getSys()*100+"%";
          		byte[] b = q.getBytes();
		  	os=s.getOutputStream();  
		  	os.write(b);
		    os.flush();
		  	//读内容
		  	Thread.sleep(1000);
	     /*is=s.getInputStream();
	     int len=is.available();
	     System.out.println("len:"+len);
	     byte[] bytes=new byte[len];
	     is.read(bytes);
	     String resut=new String(bytes);
	     System.out.println("resut:"+resut);*/
	     //TODO 这里通过返回结果处理	     	  
	    } catch (
UnknownHostException e) {
	     e.printStackTrace();
	    } catch (
IOException e) {
	     e.printStackTrace();
	    } catch (SigarException e) {
		 e.printStackTrace();
		} catch (InterruptedException e) {
		 e.printStackTrace();
		}finally{
	    }
	   }     
	  }).start();
	 }
	private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
		//p = false;
		//Thread.interrupted();
         这里不会写了,写了这个按钮也按不动
	}
------解决方案--------------------
已解决