線程是編程中非常重要的概念,它可以幫助我們實現多任務和并發。Java是一種非常流行的編程語言,它也支持線程。在Java中,如果我們需要控制線程的狀態,可以通過掛起和繼續線程來實現。下面我們將介紹如何在Java中實現帶界面的線程掛起和繼續。
//創建一個線程類 class MyThread extends Thread{ boolean isPause; //標志位,用于控制線程的狀態 public void setPause(boolean isPause) { this.isPause = isPause; } @Override public void run() { super.run(); int i=0; while (true){ if(!isPause){ try { Thread.sleep(1000);//線程休眠一秒 } catch (InterruptedException e) { e.printStackTrace(); } i++; System.out.println("線程執行次數:"+i); } } } } //在UI界面上設置掛起和繼續按鈕 public class TestFrame extends JFrame{ private JButton pauseButton; //掛起按鈕 private JButton resumeButton; //繼續按鈕 private MyThread myThread; //線程對象 public TestFrame(){ initComponents(); } private void initComponents(){ setTitle("帶界面的線程掛起和繼續"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setBounds(100,100,300,100); //掛起按鈕 pauseButton=new JButton(); pauseButton.setText("掛起"); pauseButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { myThread.setPause(true); //設置線程狀態為掛起 } }); getContentPane().add(pauseButton,BorderLayout.WEST); //繼續按鈕 resumeButton=new JButton(); resumeButton.setText("繼續"); resumeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { myThread.setPause(false); //設置線程狀態為繼續 } }); getContentPane().add(resumeButton,BorderLayout.EAST); //創建線程對象 myThread=new MyThread(); myThread.isPause=false; myThread.start(); setVisible(true); } public static void main(String[] args){ TestFrame testFrame=new TestFrame(); } }
可以看到,我們創建了一個MyThread類,這個類繼承自Thread類,同時擁有一個標志位isPause,用于控制線程的狀態。在線程的run方法中,如果標志位為false,就讓線程休眠1秒并輸出執行次數,否則什么都不做。在UI界面上,我們創建了兩個按鈕,一個是掛起按鈕,一個是繼續按鈕。通過設置標志位,我們可以實現線程的掛起和繼續。
帶界面的線程掛起和繼續是很常見的需求,通過這篇文章,你可以快速掌握Java中線程掛起和繼續的實現方法,進而實現自己的需求。