歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> JAVA線程的應用實例

JAVA線程的應用實例

日期:2017/3/1 10:41:59   编辑:Linux編程

JAVA線程的應用實例(運用2種中斷線程方式,基於實現進度條為例)

Java內置了對多線程的支持,那些在其他語言中必須由手工完成的工作,現在都可以由Java自動處理。我們進入多線程就像進入了一個全新的領域,因為它的編程思想打破了傳統,傳統的程序代碼一般都是從上到下一條一條的執行的,而多線程允許多個代碼塊並行執行。所以多線程編程模式可以更好的模擬現實世界的應用。可以說,java對多線程的內置支持是對傳統的計算機編程領域的一次突破貢獻。我們不應該去抵制它,而是更好的去熟悉和利用它。
C++沒有對多線程編程提供內置支持,於是就必須依賴於操作系統來處理多線程任務。這就意味著創建、啟動、同步和結束線程都必須通過對操作系統的多次調用來實現。因此C++中的多線程代碼是不可移植的。這也使得C++編程中的多線程沒有得以廣泛應用。
  1. package com.han;
  2. import java.awt.*;
  3. import javax.swing.*;
  4. /**
  5. * 內部類與匿名內部類的分別使用,並且分別運用了interrupt()方法和在run()中使用無限循環,然後用一個布爾什標記去控制循環的停止
  6. * @author HAN
  7. *
  8. */
  9. @SuppressWarnings("serial")
  10. public class Thread_interrupt extends JFrame{
  11. static Thread thread;
  12. JProgressBar progressBar;
  13. public Thread_interrupt(){
  14. progressBar=new JProgressBar();
  15. progressBar.setStringPainted(true);
  16. Container container=getContentPane();
  17. container.add(progressBar, BorderLayout.NORTH);//在不指定布局管理器的情況下,默認使用BorderLayout。 若不使用布局管理器,需明確說明setLayout(new BorderLayout())
  18. this.pack();
  19. this.setVisible(true);
  20. this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  21. this.creatThread();
  22. thread.start();
  23. //thread_instance.setContinue(false); //另一種中斷線程方式
  24. thread.interrupt();
  25. }
  26. class Thread_instance implements Runnable{
  27. boolean isContinue=true;
  28. public void setContinue(boolean b){
  29. this.isContinue=b;
  30. }
  31. @Override
  32. public void run() {
  33. // TODO Auto-generated method stub
  34. int count=0;
  35. while(true){
  36. progressBar.setValue(++count);
  37. try {
  38. Thread.sleep(1000);
  39. } catch (InterruptedException e) {
  40. // TODO Auto-generated catch block
  41. System.out.println("當前程序被中斷");
  42. break;
  43. }
  44. if(!isContinue){
  45. break;
  46. }
  47. }
  48. System.out.println("here");
  49. }
  50. }
  51. void creatThread(){
  52. thread=new Thread(new Thread_instance());
  53. }
  54. static void init(JFrame frame,int width,int height){
  55. frame.setSize(width,height);
  56. }
  57. public static void main (String[] args){
  58. init(new Thread_interrupt(),100,100);
  59. }
  60. }
  61. /*@SuppressWarnings("serial")
  62. public class Thread_interrupt extends JFrame{
  63. Thread thread;
  64. JProgressBar progressBar;
  65. boolean isContinue=true;
  66. public Thread_interrupt(){
  67. progressBar=new JProgressBar();
  68. progressBar.setStringPainted(true);
  69. Container container=getContentPane();
  70. container.add(progressBar);
  71. this.pack();
  72. this.setVisible(true);
  73. this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  74. thread=new Thread(new Runnable(){
  75. public void run() {
  76. // TODO Auto-generated method stub
  77. int count=0;
  78. while(true){
  79. progressBar.setValue(++count);
  80. try {
  81. Thread.sleep(1000);
  82. } catch (InterruptedException e) {
  83. // TODO Auto-generated catch block
  84. System.out.println("當前程序被中斷");
  85. break;
  86. }
  87. if(!isContinue){
  88. break;
  89. }
  90. }
  91. System.out.println("here");
  92. }
  93. });
  94. thread.start();
  95. // thread.interrupt();
  96. setContinue(false);
  97. }
  98. *//**
  99. * @param b true=continue to execute run();
  100. * false=stop to execute run()
  101. *//*
  102. private void setContinue(boolean b) {
  103. // TODO Auto-generated method stub
  104. this.isContinue=b;
  105. }
  106. public static void main (String[] args){
  107. new Thread_interrupt();
  108. }
  109. }
  110. */
Copyright © Linux教程網 All Rights Reserved