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程序设计中合理利用,可以极大的提高程序的运行效率 ...
随机推荐
- jeecg入门操作—一对多表单开发
一.创建主表 创建订单主表(torder_main) 二.创建附表客户信息表(torder_customer) 设置附表页面外键不可见 设置附表外键 三.创建附表机票 信息表(torder_tic ...
- C语言之输出空心棱形图案
#include<stdio.h> #include<stdlib.h> void main() { int n,j,i; /*i为行数,j为每行中的项数*/ printf(& ...
- RMQ 问题 ST 算法(模板)
解决区间查询最大值最小值的问题 用 $O(N * logN)$ 的复杂度预处理 查询的时候只要 $O(1)$ 的时间 这个算法是 real 小清新了 有一个长度为 N 的数组进行 M 次查询 可 ...
- iTextCharp c#
//引用iTextSharp static void testPdf() { var document = new Document(); var writer = PdfWriter.GetInst ...
- Java静态代码块、构造代码块执行顺序问题
package com.zxl.staticdemo; public class BlockTest { static { System.out.println("BlockTest静态代码 ...
- StringBuilder的常用方法
转自:https://www.cnblogs.com/jack-Leo/p/6684447.html 在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符 ...
- [BZOJ 3227] [SDOI 2008] 红黑树(tree)
Description 红黑树是一类特殊的二叉搜索树,其中每个结点被染成红色或黑色.若将二叉搜索树结点中的空指针看作是指向一个空结点,则称这类空结点为二叉搜索树的前端结点.并规定所有前端结点的高度为- ...
- Oracle字符串行拆分成列的三种方式
Oracle字符串行拆分成列的三种方式 --muphy 开发过程中经常会遇到将前台多个值用逗号连接一同传递到后台查询,这个用逗号连接的字符串分隔的每个字符串分别对应Oracle数据库表的不同行. 如下 ...
- wx.request 使用数据
小程序中,怎么使用wx.request返回的数据??? 在你的js页面中 主要是这句话 var that=this; 为什么呢?因为使用过jquery的ajax的朋友都知道.在ajax函数中的this ...
- Python 实现 Html 转 Markdown(支持 MathJax 数学公式)
因为需要转 html 到 markdown,找了个 python 的库,该库主要是利用正则表达式实现将 Html 转为 Markdown. 数学公式需要自己修改代码来处理. 我 fork 的项目地址: ...