<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. 0929mysql前缀索引如何找到合适的位数

    前缀索引,是指对于VARCHAR/TEXT/BLOB类型的字段建立索引时一般都会选择前N个字符作为索引.索引很长的字符列,会让索引变得大且慢.索引开始的部分字符,这样可以大大节约索引空间,从而提高索引 ...

  2. URL(待整合到HTTP书中哦)

    一:scheme://host.domain:port/path/filename scheme - 定义因特网服务的类型.最常见的类型是 http host - 定义域主机(http 的默认主机是 ...

  3. c#模拟表单POST数据,并获取跳转之后的页面

    直接看代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...

  4. git介绍

    简介:Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.Git ...

  5. nginx启动、重启、关闭

    一.启动 cd usr/local/nginx/sbin ./nginx 二.重启 更改配置重启nginx kill -HUP 主进程号或进程号文件路径 或者使用 cd /usr/local/ngin ...

  6. IntelliJ_设置

    1.修改背景色.修改字体大小 http://blog.csdn.net/hpf911/article/details/16888797 2.显示行号 搜索Line Number 3.代码结构图 Vie ...

  7. 华硕笔记本BIOS设置详解

    BIOS是英文Basic Input/Output System的缩写,即基本输入输出系统,合理的BIOS设置可以让我们的电脑更好的为我们服务,但由于大部分笔记本的BIOS界面是英文,并且BIOS里面 ...

  8. shell中逻辑与的两种表示方法

    bash中表示逻辑与的两种方法: (1)[ $state == "running" -a $name == "zone1" ] (2)[[ $state == ...

  9. 在MAC上搭建tomcat,再使用servlet时遇到的问题。

    说起来真是惭愧.在mac上配置tomcat环境时.tomcat6能正确运行.但是7,8都运行不了.具体表现是tomcat6访问127.0.0.1:8080可以显示那个界面,然而tomcat7和8都显示 ...

  10. linux删除文件后没有释放空间

    转载 http://blog.csdn.net/wyzxg/article/details/4971843 今天发现一台服务器的home空间满了,于是要清空无用的文件,当我删除文件后,发现可用空间没有 ...