JAVA进阶14
间歇性混吃等死,持续性踌躇满志系列-------------第14天
1、线程的加入
package code0328; import javax.swing.*;
import java.awt.*; public class JoinTest extends JFrame {
//定义两个线程
private Thread threadA;
private Thread threadB;
//定义两个进度条组件
final JProgressBar progressBar = new JProgressBar();
final JProgressBar progressBar2 = new JProgressBar();
int count = 0; public static void main(String[] args) {
init(new JoinTest(), 400, 400);
} public JoinTest() {
super();
//将进度条设置在窗体最北面
getContentPane().add(progressBar, BorderLayout.NORTH);
//将进度条设置在窗体最南面
getContentPane().add(progressBar2, BorderLayout.SOUTH);
progressBar.setStringPainted(true);
progressBar2.setStringPainted(true);
//使用匿名内部类形式初始化Thread实例
threadA = new Thread(new Runnable() {
int count = 0; //重写run方法
public void run() {
while (true) {
//设置进度条的当前值
progressBar.setValue(++count);
try {
//使A休眠0.1秒
threadA.sleep(100);
//使B调用join()方法
threadB.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
//启动线程A
threadA.start();
threadB = new Thread(new Runnable() {
public void run() {
//设置进度条的当前值
progressBar2.setValue(++count);
try {
//使B休眠0.1秒
threadB.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
//当count变量增长为100时 }
});
threadB.start();
} public static void init(JFrame frame, int width, int height) {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(width, height);
frame.setVisible(true);
}
}
运行结果图

2、线程的安全
package code0328;
public class ThreadSafeTest implements Runnable {
//设置当前总票数
int num = 10;
public void run(){
while (true){
synchronized (""){
if (num > 0) {
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("tickets:" + --num);
}
}
}
}
public static void main(String[] args) {
//实例化类对象
ThreadSafeTest t = new ThreadSafeTest();
//以该类对象分别实例化4个线程
Thread TA=new Thread(t);
Thread TB=new Thread(t);
Thread TC=new Thread(t);
Thread TD=new Thread(t);
Thread TE=new Thread(t);
Thread TF=new Thread(t);
//分别启动线程
TA.start();
TB.start();
TC.start();
TD.start();
TE.start();
TF.start();
}
}
运行结果图

3、 线程的插队运行
package code0328;
class EmergencyThread implements Runnable {
public void run() {
for (int i = 0; i < 6; i++) {
try {
//当前线程休眠0.1秒实现动态更新
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
//紧急情况下车辆发车
System.out.println("紧急情况:" + i + "号车出发!");
}
}
}
public class JoinThread {
public static void main(String[] args) {
//创建新线程
Thread thread = new Thread(new EmergencyThread());
//运行新线程
thread.start();
for (int i = 0; i < 6; i++) {
try {
//当前线程休眠0.1秒实现动态更新
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
//正常情况下车辆出发
System.out.println("正常情况:" + i + "号车出发!");
try{
//使用join()方法让新创建的线程优先完成
thread.join();
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
}
运行结果图

4、InetAdress类的常用方法

package code0328; import java.net.InetAddress;
import java.net.UnknownHostException; public class Adress {
public static void main(String[] args) {
//声明InetAddress对象
InetAddress ip;
//try预警捕捉可能出现的异常
try {
//实例化对象
ip = InetAddress.getLocalHost();
//获取本地主机名
String Localname = ip.getHostName();
//获取本地主机的IP地址
String localip = ip.getHostAddress();
//输出本地主机名
System.out.println("本地主机名:" + Localname);
//输出本地主机的IP地址
System.out.println("本地ip地址:"+localip);
}catch (UnknownHostException e){
//输出异常
e.printStackTrace();
}
}
}
运行结果图

5、数组工具类Arrays

package cn.intcast.demo14;
import java.util.Arrays;
public class Code01Arrays {
public static void main(String[] args) {
int[] intArray = {1,2,3,4,5};
//将int[]数组按照默认格式变成字符串
String inStr = Arrays.toString(intArray);
System.out.println(inStr);
int[] array1 = {11,23,4,2,1,10};
Arrays.sort(array1);
System.out.println(Arrays.toString(array1));
String[] array2 = {"o","z","d","s","a"};
Arrays.sort(array2);
System.out.println(Arrays.toString(array2));
}
}
运行结果图

6、字符串倒叙排列
package cn.intcast.demo14;
import java.util.Arrays;
public class Code01Arrays {
public static void main(String[] args) {
String intArray = "qweraszxc";
char[] chars = intArray.toCharArray();
Arrays.sort(chars);
for (int i = chars.length - 1; i >= 0; i--) {
System.out.print(chars[i]+",");
}
}
}
运行结果图

JAVA进阶14的更多相关文章
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)
本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...
- Java进阶(三十二) HttpClient使用详解
Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...
- Java进阶(五十三)屡试不爽之正则表达式
Java进阶(五十三)屡试不爽之正则表达式 在线测试网址: http://tool.oschina.net/regex/# 上面的在线测试网址,含有正则表达式的生成,非常实用.大家共勉之! 匹配中文: ...
- Java进阶之路
Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ...
- Java进阶7并发优化4——JDK并发数据结构
Java进阶7并发优化4——JDK并发数据结构20131114 由于并发程序和串行程序的不同特点,在串行程序中使用的数据结构可能无法在并行程序中直接的正常使用,因为这些数据结构可能不是线程安全的,所以 ...
- java进阶视频分享
更多资源和教程请关注公众号:非科班的科班. 如果觉得我写的还可以请给个赞,谢谢大家,你的鼓励是我创作的动力 课程目录介绍 01.开班仪式02.并发编程专题之多线程基础03.并发编程专题之Java内存模 ...
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- [.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术
[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ...
随机推荐
- idea 右键无java class选项
项目中新建module之后,要在该目录下新增java Class文件,右键——>New发现无Java Class选项. File –Project Structure或者ctrl+alt+shi ...
- 【原创】平时的你VS面试的你
引言 大家在面试的时候,特别是最后一面HR面,是不是经常都说自己咳咳咳.博主特意总结了一下平时的你和面试的你区别在哪,整理成文,大家看看就好~ 正文 面对HR 问题:你是如何和你同事相处的? 平时的你 ...
- Riemann流形上的梯度,散度与Laplace算子
今天(准确地说是昨天)被学物理的同学问到Stokes定理,想起来我还有一个知道但没有细看的东西,下面整理成提示完整的习题记录一下. 这部分内容将会加进几何学观止,敬请期待.目前正在纂写代数几何簇的部分 ...
- boost学习目录
Boost之数值转换lexical_cast https://www.cnblogs.com/TianFang/archive/2013/02/05/2892506.html Boost之字符串算法s ...
- Neutron路由篇:L3 agent+Namespace
Neutron 的路由服务是由 l3 agent 提供的. 除此之外,l3 agent 通过 iptables 提供 firewall 和 floating ip 服务. l3 agent 需 ...
- springboot 与任务
异步任务.定时任务.邮件任务 一.异步任务 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在 处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用 多线程来 ...
- arale-cookie 使用
https://www.npmjs.com/package/arale-cookie arale-cookie 使用 define(function() { var Cookie = require ...
- windows常用快捷键和指令
快捷键: Ctrl+鼠标滚轮:更改图标大小(桌面).缩放(开始屏幕) Ctrl+A:选择所有 Ctrl+C:复制 Ctrl+E:选择搜索框(资源管理器) Ctrl+N:新窗口(资源管理器) Ctrl+ ...
- idea安装成功后,设置字体、快捷键、配置jdk等操作
设置字体 配置jdk 快捷键 复制当前一行: 设置自动提示,不区分大小写 关闭当前窗口 设置类头注释 自定义注释+注释快捷键 Lombok 插件安装 get.set方法报红cannot resolv ...
- 文本编辑利器Notepad++ 10个强大而又鲜为人知的特性【转】
文本编辑利器Notepad++ 10个强大而又鲜为人知的特性 - 为程序员服务