<1>设计4个线程对象,两个线程执行减操作,两个线程执行加操作

//=================================================
// File Name : Thread4_demo
//------------------------------------------------------------------------------
// Author : Common // 类名:Operator
// 属性:
// 方法:
class Operator{ private static int i; // 内部类名:Inc
// 属性:
// 方法:
class Inc implements Runnable{ @Override
public void run() {
// TODO 自动生成的方法存根
for(int j=0;j<10;j++){
this.inc();
System.out.println(Thread.currentThread().getName()+",i="+i);
}
} public synchronized void inc(){
i++;
} } //内部类名:Dec
//属性:
//方法:
class Dec implements Runnable{ @Override
public void run() {
// TODO 自动生成的方法存根
for(int j=0;j<10;j++){
this.dec();
System.out.println(Thread.currentThread().getName()+",i="+i);
}
} public synchronized void dec(){
i--;
}
}
} //主类
//Function : ThreadStop_demo
public class Thread4_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根
Operator.Inc inc1 = new Operator().new Inc(); //实例化内部类对象
Operator.Inc inc2 = new Operator().new Inc(); //实例化内部类对象
Operator.Dec dec1 = new Operator().new Dec(); //实例化内部类对象
Operator.Dec dec2 = new Operator().new Dec(); //实例化内部类对象 Thread t1 = new Thread(inc1); //实例化Thread类对象
Thread t2 = new Thread(inc2); //实例化Thread类对象
Thread t3 = new Thread(dec1); //实例化Thread类对象
Thread t4 = new Thread(dec2); //实例化Thread类对象 t1.start();
t2.start();
t3.start();
t4.start();
} }

<2>设计一个生产电脑和搬运电脑类,要求生产出一台电脑就搬走一台电脑,如果没有新的电脑生产出来,则搬运工要等待新电脑产出;如果生产出的电脑没有搬走,则要等待电脑搬走之后再生产,并统计出生产的电脑数量。

//=================================================
// File Name : computer_transfer_demo
//------------------------------------------------------------------------------
// Author : Common //类名:Computer
//属性:
//方法:
class Computer {
private String name = "未生产";
private boolean flag = true; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public synchronized void set(String name){ //设置信息名称及内容
if(!flag){ //标志位为false,不可以生产,在这里等待取走
try{
super.wait(); //等待搬运者取走
}catch(InterruptedException e){
e.printStackTrace();
}
}
this.setName(name); //设置信息名称
System.out.println(this.getName()); //输出信息
try{
Thread.sleep(300); //加入延迟
}catch(InterruptedException e){
e.printStackTrace();
}
flag = false; //标志位为true,表示可以取走
super.notify(); //唤醒等待线程
} public synchronized void get(){ //取得信息内容
if(flag){ //标志位为true,不可以取走
try{
super.wait(); //等待生产者生产
}catch(InterruptedException e){
e.printStackTrace();
}
}
try {
Thread.sleep(300); //加入延迟
} catch (InterruptedException e) {
e.printStackTrace();
}
this.setName("已经搬运完毕");
System.out.println(this.getName()); //输出信息
flag = true; //修改标志位为true,表示可以生产
super.notify(); //唤醒等待线程
} } //类名:producer
//属性:
//方法:
class producer implements Runnable{ //定义生产者线程 private Computer com = null; //保存Computer引用 public producer(Computer com) { //构造函数
super();
this.com = com;
} @Override
public void run() {
int count = 0;
// TODO 自动生成的方法存根
for(int i=0;i<10;i++){
this.com.set("已经生产完毕");
count++;
}
System.out.println("生产的电脑数量:"+count);
} } //类名:transfer
//属性:
//方法:
class transfer implements Runnable{ //定义生产者线程 private Computer com = null; //保存Computer引用 public transfer(Computer com) { //构造函数
super();
this.com = com;
} @Override
public void run() {
// TODO 自动生成的方法存根
for(int i=0;i<10;i++){
this.com.get(); }
} } //主类
//Function : computer_transfer_demo
public class computer_transfer_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根
Computer c = new Computer();
producer pro = new producer(c);
transfer tra = new transfer(c);
new Thread(pro).start();
new Thread(tra).start();
} }

Java 9.10习题的更多相关文章

  1. JAXB在Java 9/10并且使用Tomcat 9的问题

    Implementation of JAXB-API has not been found on module path or classpath. JAXB API是java EE 的API,jav ...

  2. Eclipse调试Java的10个技巧【转】

    clipse调试Java的10个技巧 先提三点 不要使用System.out.println作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志 1.条件断点 想象一下我们平时 ...

  3. Java复习10.Servlet编程

    Java复习10. Servlet编程知识 20131008 前言: 之前在大三下的时候,学习了一个月的JSP和Servlet知识,但是没有什么项目经验,把JSP Web开发学习实录看了前面几张,后面 ...

  4. 几周内搞定Java的10个方法

    不要将Java与JavaScript弄混了,Java的目标是“一次编译,到处调试”(呃,不对,是“到处运行”).简单来说,就是Java程序可以直接在任何设备上运行. Java语言是什么? 不管我们是否 ...

  5. 030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符

    030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符 本文知识点:Java中的条件运算符 条件运算符是Java当中唯一一个三目运算符 什么是三目运算 ...

  6. Java SE 10 新增特性

    Java SE 10 新增特性 作者:Grey 原文地址:Java SE 10 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new ...

  7. Java SE 10 Application Class-Data Sharing 示例

    Java SE 10 Application Class-Data Sharing 示例 作者:Grey 原文地址:Java SE 10 Application Class-Data Sharing ...

  8. Java线程——线程习题(一)子线程执行10次后,主线程再运行5次,这样交替执行三遍

    题目:子线程执行10次后,主线程再运行5次,这样交替执行三遍 代码如下: package com.itheima.gan; /** * 子线程执行10次后,主线程再运行5次,这样交替执行三遍 * @a ...

  9. JAVA 5.17习题

    1.编写并测试一个代表地址的Address类,地址信息由国家.省份.城市.街道.邮编组成,并可以返回完整的地址信息. //======================================= ...

随机推荐

  1. jax-ws开发总结

    服务端开发步骤: 1.定义SEI,即java中的接口 2.定义SEI的实现类,使用@webservice注解标记它是一个webservice服务类 3.发布服务 客户端开发步骤:使用jdk的servi ...

  2. Yii2初级入门教程

    下载安装 Yii挺火的,也是MVC的Web框架.国内占有率,相当不错.值得一学. 网络上提供了两个版本模板的下载, advanced, 和 basic, 使用起来一致, 提供的模块支持不同. Adva ...

  3. iOS开发--二维码的生成

    一.需要包含头文件 #import <CoreImage/CoreImage.h> 二.示例代码 -- 以下生成的二维码不够清晰 如图: - (void)touchesBegan:(NSS ...

  4. Dubbo_创建Dubbo服务并在ZooKeeper注册,然后通过Jar包执行

    一.安装ZooKeeper(略) 二.创建Dubbo服务  1.DemoService 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  5. 【BZOJ 1455】罗马游戏

    左偏树模板 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ...

  6. 让Chrome支持Ajax/$http方式读取本地文件

    在开发中经常写些小demo调试一下插件什么的 数据源又经常手动构造分离为一个单独的文件.用ajax或$http去访问时总是拒绝访问.这个时候可以给Chrome的快捷图标加启动参数,让浏览器允许js访问 ...

  7. python time函数

    时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python附带的受欢迎的time模块下有很多函数可以转换常见日期格式.如函数time.tim ...

  8. [聚类算法] K-means 算法

    聚类 和 k-means简单概括. 聚类是一种 无监督学习 问题,它的目标就是基于 相似度 将相似的子集聚合在一起. k-means算法是聚类分析中使用最广泛的算法之一.它把n个对象根据它们的属性分为 ...

  9. hive 函数 Cube

    最近在优化一个报表系统.leader 提示我可以用cube函数.在此记录一下使用: 1) cube 简称数据魔方. 可以实现hive多个任意维度的查询. cube(a,b,c)  首先会对(a,b,c ...

  10. xargs 命令

    1. xargs 很好用,可以将多个结果分段传给下一个命令进行计算 比如说find 找到很多个文件,又想对每个文件统计条数: find 20151201 -name "mjoys*.txt& ...