java线程启动后无法终止的问题

一年半前碰到一个问题,就是客户端启动服务端线程后找不到终止的方法,经验不够啊,但自从看了好多代码之后就知道了。


import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


class Thread2 extends Thread{
private boolean r;


public boolean isR() {
return r;
}


public void setR(boolean r) {
this.r = r;
}
}
class Ac extends Thread2{
private int time;
private int time2;
public int getTime2() {
return time2;
}
public void setTime2(int time2) {
this.time2 = time2;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
@SuppressWarnings("static-access")
public void run() {
        while(true) {
        if(isR())break;
            try {
            Runtime.getRuntime().exec("netsh interface set interface \"本地连接\" enabled ");
                this.sleep(time2);
                System.out.println("已连接");
            Runtime.getRuntime().exec("netsh interface set interface \"本地连接\" disabled ");
            System.out.println("已断开");
                this.sleep(time);
} catch (Exception e) {
System.out.println("线程出现错误了!!"+e);
}
        }
    }
}
public class netsh {
private static List<Thread2> threadList = new ArrayList<Thread2>();
private static JTextField text,text2;
private static JFrame frame;
public static void main(String[] args) {
frame = new JFrame();
setWindowCenter(frame);
JLabel lb1 = new JLabel("断网间隔(秒):");
JPanel jpanel=new JPanel();
JButton startButton=new JButton("启动");

text = new JTextField(10);
JLabel lb2 = new JLabel("联网时间(秒):");
text2 = new JTextField(10);
jpanel.add(lb1);
jpanel.add(text);
jpanel.add(lb2);
jpanel.add(text2);
jpanel.add(startButton);
startButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                start();
            }
        });
JButton stopButton=new JButton("终止");
stopButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            stopAll();
            }
        });
jpanel.add(stopButton);
frame.add(jpanel);
frame.setSize(261, 115);
frame.setResizable(false);
frame.setTitle("色哥版断网器");
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
quit();
}//End windowClosing
});
}
private static void quit() {
/*int flag = 0;
String msg = "您色哥版断网器吗?";
flag = JOptionPane.showConfirmDialog(null, msg, "提示", JOptionPane.YES_NO_OPTION);
if(flag == JOptionPane.YES_OPTION) {*/
frame.setVisible(false);
System.exit(0);
//}//End if(flag == JOptionPane.YES_OPTION)
// return;
}
//终止线程
public static void stopAll(){
if (threadList.size() != 0) {
System.out.println("killAll");
/*for(Thread2 r:threadList){
System.out.println("t");
threadList.remove(0);
r.setR(true);//完成线程
}*/
Iterator<Thread2> it = threadList.iterator();
//因为list中的remove方法remove对象时,对象不能发生变化,所以用Iterator.remove();
while (it.hasNext()) {//hasNext()判断有没有下一个元素
Thread2 r = it.next();
it.remove();
r.setR(true);//完成线程
}
}
}
//创建线程
public static void start(){
if(threadList.size()==0){
/*Scanner sc = new Scanner(System.in); 
       System.out.println("请输入断网间隔(单位秒)"); 
       int ti = sc.nextInt()*1000; */
int t1,t2;
if(text.getText().length()!=0 && text2.getText().length()!=0){
t1 = Integer.valueOf(text.getText())*1000;
t2 = Integer.valueOf(text2.getText())*1000;
}else
return;
       Ac a=new Ac();
       threadList.add(a);
       a.setTime(t1);
       a.setTime2(t2);
a.start();
}
}
public static void setWindowCenter(Component cp) {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
cp.setLocation (screenSize.width / 2 - (cp.getWidth() / 2), 
screenSize.height / 2 - (cp.getHeight() / 2));
}
}


这是一个写来断网用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值