JAVA进阶14

间歇性混吃等死,持续性踌躇满志系列-------------第14天

1、线程的加入

 1 package code0328;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 
 6 public class JoinTest extends JFrame {
 7     //定义两个线程
 8     private Thread threadA;
 9     private Thread threadB;
10     //定义两个进度条组件
11     final JProgressBar progressBar = new JProgressBar();
12     final JProgressBar progressBar2 = new JProgressBar();
13     int count = 0;
14 
15     public static void main(String[] args) {
16         init(new JoinTest(), 400, 400);
17     }
18 
19     public JoinTest() {
20         super();
21         //将进度条设置在窗体最北面
22         getContentPane().add(progressBar, BorderLayout.NORTH);
23         //将进度条设置在窗体最南面
24         getContentPane().add(progressBar2, BorderLayout.SOUTH);
25         progressBar.setStringPainted(true);
26         progressBar2.setStringPainted(true);
27         //使用匿名内部类形式初始化Thread实例
28         threadA = new Thread(new Runnable() {
29             int count = 0;
30 
31             //重写run方法
32             public void run() {
33                 while (true) {
34                     //设置进度条的当前值
35                     progressBar.setValue(++count);
36                     try {
37                         //使A休眠0.1秒
38                         threadA.sleep(100);
39                         //使B调用join()方法
40                         threadB.join();
41                     } catch (Exception e) {
42                         e.printStackTrace();
43                     }
44                 }
45             }
46         });
47         //启动线程A
48         threadA.start();
49         threadB = new Thread(new Runnable() {
50             public void run() {
51                 //设置进度条的当前值
52                 progressBar2.setValue(++count);
53                 try {
54                     //使B休眠0.1秒
55                     threadB.sleep(100);
56                 } catch (Exception e) {
57                     e.printStackTrace();
58                 }
59                 //当count变量增长为100时
60 
61             }
62         });
63         threadB.start();
64     }
65 
66     public static void init(JFrame frame, int width, int height) {
67         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
68         frame.setSize(width, height);
69         frame.setVisible(true);
70     }
71 }
View Code

运行结果图

2、线程的安全

 1 package code0328;
 2 
 3 public class ThreadSafeTest implements Runnable {
 4     //设置当前总票数
 5     int num = 10;
 6     public void run(){
 7         while (true){
 8             synchronized (""){
 9                 if (num > 0) {
10                     try {
11                         Thread.sleep(100);
12                     } catch (Exception e) {
13                         e.printStackTrace();
14                     }
15                     System.out.println("tickets:" + --num);
16                 }
17             }
18 
19         }
20     }
21 
22     public static void main(String[] args) {
23         //实例化类对象
24         ThreadSafeTest t = new ThreadSafeTest();
25         //以该类对象分别实例化4个线程
26         Thread TA=new Thread(t);
27         Thread TB=new Thread(t);
28         Thread TC=new Thread(t);
29         Thread TD=new Thread(t);
30         Thread TE=new Thread(t);
31         Thread TF=new Thread(t);
32         //分别启动线程
33         TA.start();
34         TB.start();
35         TC.start();
36         TD.start();
37         TE.start();
38         TF.start();
39     }
40 }
View Code

运行结果图

3、 线程的插队运行

 1 package code0328;
 2 
 3 class EmergencyThread implements Runnable {
 4     public void run() {
 5         for (int i = 0; i < 6; i++) {
 6             try {
 7                 //当前线程休眠0.1秒实现动态更新
 8                 Thread.sleep(100);
 9             } catch (InterruptedException e) {
10                 e.printStackTrace();
11             }
12             //紧急情况下车辆发车
13             System.out.println("紧急情况:" + i + "号车出发!");
14         }
15     }
16 }
17 
18 public class JoinThread {
19     public static void main(String[] args) {
20         //创建新线程
21         Thread thread = new Thread(new EmergencyThread());
22         //运行新线程
23         thread.start();
24         for (int i = 0; i < 6; i++) {
25             try {
26                 //当前线程休眠0.1秒实现动态更新
27                 Thread.sleep(100);
28             } catch (InterruptedException e) {
29                 e.printStackTrace();
30             }
31             //正常情况下车辆出发
32             System.out.println("正常情况:" + i + "号车出发!");
33             try{
34                 //使用join()方法让新创建的线程优先完成
35                 thread.join();
36             }catch (InterruptedException e){
37                 e.printStackTrace();
38             }
39         }
40     }
41 }
View Code

运行结果图

4、InetAdress类的常用方法

 1 package code0328;
 2 
 3 import java.net.InetAddress;
 4 import java.net.UnknownHostException;
 5 
 6 public class Adress {
 7     public static void main(String[] args) {
 8         //声明InetAddress对象
 9         InetAddress ip;
10         //try预警捕捉可能出现的异常
11         try {
12             //实例化对象
13             ip = InetAddress.getLocalHost();
14             //获取本地主机名
15             String Localname = ip.getHostName();
16             //获取本地主机的IP地址
17             String localip = ip.getHostAddress();
18             //输出本地主机名
19             System.out.println("本地主机名:" + Localname);
20             //输出本地主机的IP地址
21             System.out.println("本地ip地址:"+localip);
22         }catch (UnknownHostException e){
23             //输出异常
24             e.printStackTrace();
25         }
26     }
27 }
View Code

 运行结果图

 5、数组工具类Arrays

 1 package cn.intcast.demo14;
 2 
 3 import java.util.Arrays;
 4 
 5 public class Code01Arrays {
 6     public static void main(String[] args) {
 7         int[] intArray = {1,2,3,4,5};
 8         //将int[]数组按照默认格式变成字符串
 9         String inStr = Arrays.toString(intArray);
10         System.out.println(inStr);
11 
12         int[] array1 = {11,23,4,2,1,10};
13         Arrays.sort(array1);
14         System.out.println(Arrays.toString(array1));
15 
16         String[] array2 = {"o","z","d","s","a"};
17         Arrays.sort(array2);
18         System.out.println(Arrays.toString(array2));
19     }
20 
21 }
View Code

 运行结果图

6、字符串倒叙排列

 1 package cn.intcast.demo14;
 2 
 3 import java.util.Arrays;
 4 
 5 public class Code01Arrays {
 6     public static void main(String[] args) {
 7         String intArray = "qweraszxc";
 8         char[] chars = intArray.toCharArray();
 9         Arrays.sort(chars);
10         for (int i = chars.length - 1; i >= 0; i--) {
11             System.out.print(chars[i]+",");
12         }
13 
14 
15     }
16 
17 }
View Code

 运行结果图

 

posted @ 2019-03-28 23:25  贫血的吸血鬼  阅读(120)  评论(0编辑  收藏  举报