1. 编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
/**
* 定义父类--圆类
*/
public class Circle {
/**
* 私有属性:成员变量--圆半径
*/
private double radius;
/**
* 构造方法
*/
public Circle() {
radius = 0.0;
} public Circle(double radius) {
this.radius = radius;
} /**
*成员方法--求圆周长
*/
double getPerimeter(){
return 2*Math.PI*radius;
} /**
* 成员方法--求圆面积
*/
double getArea(){
return Math.PI*radius*radius;
}
/**
* 成员方法--显示圆半径、周长、面积
*/
void show(){
System.out.println("圆半径:"+radius);
System.out.println("圆周长:"+getPerimeter());
System.out.println("圆面积:"+getArea());
}
}
/**
* 定义子类--圆柱类
*/
public class Cylinder extends Circle {
/**
* 私有属性:成员变量--圆柱体的高
*/
private double hight;
/**
* 构造方法、调用父类方法
*/
public Cylinder() {
} public Cylinder(double r, double h) {
super(r);
this.hight = h;
} /**
* 成员方法--求圆柱体的体积
*/
public double getVolume(){
return getArea()*hight;
}
/**
* 成员方法--显示圆柱体体积
*/
void showVolume(){
System.out.println("圆柱体的体积 = "+getVolume());
}
}
/**
* 测试类
*/
public class Test {
public static void main(String[] args) {
/**
* 创建圆类对象、调用方法
*/
Circle c = new Circle();
/**
* 调用圆类方法
*/
c.show();
/**
* 创建圆柱体对象(实例)、调用方法
*/
Cylinder cy = new Cylinder();
/**
*调用父类方法
*/
cy.show();
/**
* 调用子类方法
*/
cy.showVolume();
}
}

2.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。

编写实现,要求:使用内部类实现线程,对j增减的时候不考虑顺序问题。

/**
* 测试类
*/
public class ThreadTest {
/**
* 声明成员变量
*/
private int j;
/**
* 程序主入口:main方法
*/
public static void main(String[] args) {
/**
* 创建对象
*/
ThreadTest tt = new ThreadTest();
/**
* 创建线程内部类对象
*/
Inc inc = tt.new Inc();
Dec dec = tt.new Dec();
for (int i = 0;i < 2;i++){
/**
* 创建线程对象并启动线程
*/
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
/**
* 实现同步对j的值+1操作
*/
private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc :"+j);
}
/**
* 实现同步对j的值-1操作
*/
private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec :"+j);
}
/**
* 内部类
*/
private class Inc implements Runnable {
@Override
public void run() {
for (int i = 0;i < 100;i++){
/**
* 调用加的方法
*/
inc();
}
}
}
private class Dec implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
/**
* 调用减的方法
*/
dec();
}
}
}
}

3.Java的通信编程,用Java Socket编程,要求从客户端录入几个字符,发送到服务器端,由服务器端将接收到的字符进行输出。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; /**
* 线程通信--服务器端
*/
public class Server {
/**
* 声明ServerSocket对象
*/
private ServerSocket ss;
/**
* 声明Socket对象
*/
private Socket socket;
/**
* 声明输入流对象BufferedReader
*/
private BufferedReader br;
/**
* 声明输出流对象
*/
private PrintWriter pw;
public Server(){
try {
/**
* 创建一个ServerSocket对象,指定等待端口
*/
ss = new ServerSocket(8848);
while (true){
/**
* 使用ServerSocket接收用户请求(服务器端处于监听状态)
*/
/**
* 获得客户端的socket对象
*/
socket = ss.accept();
/**
* 创建输入流并读取信息
*/
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = br.readLine();
System.out.println("客户端请求:"+line);
/**
* 创建输出流并输出信息
*/
pw = new PrintWriter(socket.getOutputStream(),true);
pw.print("请求已接收!");
/**
* 关闭流
*/
pw.close();
br.close();
socket.close();
}
} catch (IOException e) {
pw.println("出现异常!");
}
}
/**
* 程序主入口
*/
public static void main(String[] args) {
/**
* 创建服务器端对象
*/
new Server();
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket; /**
* 线程通信--客户端
*/
public class Client {
/**
* 声明Socket对象
*/
Socket socket;
/**
* 声明输入流对象
*/
BufferedReader br;
/**
* 声明输出流对象
*/
PrintWriter pw;
/**
* 构造方法
*/
public Client(){
try {
/**
* 创建Socket对象用来发送请求
*/
socket = new Socket("127.0.0.1",8848);
/**
* 创建字符缓冲区对象并输出
*/
BufferedReader line =
new BufferedReader(new InputStreamReader(System.in));
/**
* 创建输出流对象并输出
*/
pw = new PrintWriter(socket.getOutputStream(),true);
pw.println(line.readLine());
/**
* 创建输入流对象
*/
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(br.readLine());
/**
* 关闭流
*/
pw.close();
br.close();
socket.close();
} catch (IOException e) {
System.out.println("请求出错!");
}
}
/**
* 程序主入口
*/
public static void main(String[] args) {
/**
* 创建客户端对象
*/
new Client();
}
}

线程通信在自己的电脑上测试过程:

1、先运行服务器端程序,运行结果如下图

*红色方框中的红色方块按钮亮起代表程序已运行,正在等待(监听)客户端请求

2、再运行客户端程序,并输入请求,运行如下图

2.1  客户端处于等待输入指令状态

2.2  客户端完成指令输入并得到服务器端回应,红色方块按钮灭掉

2.3  服务器端,收到客户端请求给出回馈信息,并未关闭监听状态,需手动停止(现实中服务器一般是时刻处于监听状态的,维护期间会关闭)

												

最新文章

  1. C# 将内容写入txt文档
  2. 【转】Selenium 面试题总结(乙醇Blog记录的面试题)
  3. 如何停止CSS3的动画?
  4. css的小问题总结
  5. LinearLayout嵌套
  6. 【杂记】SQL篇
  7. 【Xamarin挖墙脚系列:IOS-关于手机支持的屏幕方向】
  8. 算法导论学习-RED-BLACK TREE
  9. 搜索:POJ2251&amp;POJ1426&amp;POJ3087&amp;POJ2488
  10. hdu4612(双连通缩点+树的直径)
  11. BTE 增强
  12. Block 实现 浅析
  13. java之内部类
  14. 教你用命令行激活win10系统
  15. 初探Google Guava
  16. Semaphore 与ThreadPoolExecutor 的使用
  17. UVA - 11149 (矩阵快速幂+倍增法)
  18. PHP 代 码 操 作 文 件
  19. apache -- 端口被占用
  20. CentOS6.5(4)----宿主机无法访问虚拟机中的web服务解决方案

热门文章

  1. Elasticsearch:运用shard filtering来控制索引分配给哪个节点
  2. ibatis和mybatis中的BatchExecutor
  3. 字符串操作-格式化输出-Python
  4. Flex 布局是什么?
  5. 征途堆积出友情的永恒「堆优化dp」
  6. php 调用python接口出现的一系列问题(原)
  7. scrapy_redis的使用
  8. PHP 多条件查询(汽车表)
  9. 5.Hiveguigun滚(ノ`Д)ノ竟然竞争谨慎谨慎谨慎哈喇子罢工八公
  10. android下载网络图片,设置宽高,等比缩放