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 }

运行结果图

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 }

运行结果图

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 }

运行结果图

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 }

运行结果图

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 }

运行结果图

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 }

运行结果图

原文地址:https://www.cnblogs.com/Anemia-BOY/p/10615373.html

时间: 2024-11-21 05:10:00

JAVA进阶14的相关文章

Java进阶(三)多线程开发关键技术

原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自Jason's Blog,原文链接 http://www.jasongj.com/java/multi_thread/ sleep和wait到底什么区别 其实这个问题应该这么问--sleep和wait有什么相同点.因为这两个方法除了都能让当前线程暂停执行完,几乎没有其它相同点. wait方法是Object类的方法,这意味着所有的Java类都可以调用该方法.sleep方法是Thread类的静态方法. wait是在当前线程持有wait对象锁

Java进阶之路

Java进阶之路--从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题.希望这篇文章会是你看到过的最全面最权威的回答. 一: 编程基础 不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的.下面几篇文章从思想到实现,为你梳理出常用的数据结构和经典算法. 1-1 常

Java进阶(三十二) HttpClient使用详解

Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性.因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入. 一.简介 HttpClient是A

Java进阶书籍推荐

学习Java,书籍是必不可少的学习工具之一,尤其是对于自学者而言.废话不多说,下边就给广大程序猿们推荐一些Java进阶的好书. 第一部分:Java语言篇 1.<Java编程规范> 适合对象:初级.中级 介绍:这本书的作者是被誉为Java之父的James Gosling,入门者推荐阅读,对基础的讲解很不错. 2.<Java编程思想> 适合对象:初级.中级 介绍:豆瓣给出了9.1的评分,全球程序员广泛赞誉.有人说这本书不适合初学者,不过小编认为作者并没有对读者已有的知识经验有过多要求,

Java进阶(三十四)Integer与int的种种比较你知道多少?

Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱.所以我对它们进行了总结,希望对大家有帮助. 首先看代码: package

Java 进阶(一) JVM运行时内存模型

1.JVM运行时数据区域的划分 a.程序计数器(Program Counter Register) 一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器.每个线程拥有独立的一个计数器,如果当前执行的是Native方法,则计数器值为空. b.JVM栈(Java Virtual Machine Stack) 描述Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stacks Frame)用于存储局部变量表,操作数栈,动态链接,方法出口等信息. 每一个方法从调用直至执行完成

java进阶08 GUI图形界面

图形化用户界面(GUI) 简而言之,就是可视化编程. 要想实现可视化界面(窗口),需要用到JFrame类. package Frame; public class JFrame1 { public static void main(String[] args){ UI ui=new UI(); } } 先建一个主函数,而主函数中的操作只有一句代码.这样做,既能直观又方便后期修改. 接下来是UI类的实现 package Frame; import javax.swing.JFrame; publi

老白的JAVA课程14 GUI 窗口的设置

项目驱动 需求分析-系统设计-编码-测试-维护期 GUI Swing程序的建立步骤 1.建立容器-可以容纳其他图形对象的类,容器中还可以添加容器 2.建立组件-组件就是一套图形对象 3.将组件放到容器当中-将创建好的对象添加到容器中,才能在窗口中显示 4.设置布局 JFrame:带有标题和边框的顶级窗口 JPanel:就是一个矩形的区域,其中可以包含图形组件,也可以包含其他JPanel JApplet:在浏览器中运行的容器 JScrollpane:一种可以实现水平或垂直滚动条的容器 JDiolo

java进阶07 线程的让步与阻塞与同步

前面介绍了线程的一些基本知识,现在来说下线程的让步,阻塞,和同步 先说说让步 所谓让步,就是让调用者的线程暂停,让其他线程重新竞争CPU,包括调用者. 先看看代码 package Thread; public class ThreadYield { public static void main(String[] args){ MyThread5 rthread=new MyThread5(); Thread thread1=new Thread(rthread); Thread thread2