packagemessage;importjava.util.Scanner;publicclassThread2{publicstaticvoidmain(String[]args){TextThread1t1=newTextThread1("线程1");TextThread2t2=newTextThread2("线程2");i...

package message;

import java.util.Scanner;

public class Thread2 {

public static void main(String[] args)

{

TextThread1 t1=new TextThread1("线程1");

TextThread2 t2=new TextThread2("线程2");

int x=10;

boolean iswait1=false;

boolean iswait2=false;

Scanner in=new Scanner(System.in);

x=in.nextInt();

while(x!=0)

{

switch(x)

{

case 1:

if(!t1.isAlive())

t1.start();

break;

case 2:

if(!t2.isAlive())

t2.start();

break;

case 3:

if(!iswait1)

{

synchronized(t1)

{

try

{

t1.wait();

}catch (InterruptedException e) {

e.printStackTrace();

}

}

iswait1=true;

}

break;

case 4:

if(!iswait2)

{

synchronized(t2)

{

try

{

t2.wait();

}catch (InterruptedException e) {

e.printStackTrace();

}

}

iswait2=false;

}

break;

case 5:

if(iswait1)

{

synchronized(t1)

{

t1.notify();

}

iswait1=false;

}

break;

case 6:

if(iswait2)

{

synchronized(t2)

{

t2.notify();

}

iswait2=false;

}

break;

case 7:

if(t1.isAlive())

{

try

{

Thread.sleep(1000);

}catch (InterruptedException e){}

t1.StopThread(true);

}

break;

case 8:

if(t2.isAlive())

{

try

{

Thread.sleep(1000);

}catch (InterruptedException e){}

t2.StopThread(true);

}

break;

default:

System.out.println("请重新输入");

break;

}

x=in.nextInt();

}

}

}

class TextThread1 extends Thread

{

private boolean isrun=true;

public TextThread1(String name)

{

super(name);

}

public void StopThread(boolean run)

{

this.isrun=!run;

}

public void run()

{

synchronized(this)

{

for(int i=0;i<1000000;i++)

{

if(!isrun)

break;

System.out.println(this.getName()+":"+i);

}

notify();

}

}

}

class TextThread2 extends Thread

{

private boolean isrun=true;

public TextThread2(String name)

{

super(name);

}

public void StopThread(boolean run)

{

this.isrun=!run;

}

public void run()

{

synchronized(this)

{

for(int i=1000000;i>0;i++)

{

if(!isrun)

break;

System.out.println(this.getName()+":"+i);

}

notify();

}

}

}

在线程1和2运行后,要执行3、4步的暂停线程,可是却没有反应。请大家看一看应该怎么改一下,如果还有其他地方不合适的话也请大家说一说,谢谢

展开

java 暂停多线程_关于java中多线程的暂停相关推荐

  1. python sqlite3 多线程_在python中多线程访问sqlite3数据库

    Python标准库中有sqlite3模块,可见对此数据库的认可.不过,此模块在使用时也有限制,同一个数据库连接,不能在不同线程中共享. import threading import sqlite3 ...

  2. java 怎么启动多线程_了解Java多线程及如何创建和启动多线程?

    1 . 进程与线程 至今为止,我们开发的程序在同一时间只能执行一项任务,如果程序执行中遇到了耗时的任务,程序必须等待该任务完成后才能执行后续的代码.这样的单线程结构不能充分利用计算机的硬件资源,代码运 ...

  3. java线程开启不了_Java中多线程启动,为什么调用的是start方法,而不是run方法?...

    前言 大年初二,大家新年快乐,我又开始码字了.写这篇文章,源于在家和基友交流的时候,基友问到了,我猛然发现还真是这么回事,多线程启动调用的都是start,那么为什么没人掉用run呢?于是打开我的ide ...

  4. java1.5多线程_【Java多线程】JDK1.5并发包API杂谈

    并发与并行 并发 一个或多个处理器执行更多的任务(通过划分时间片来执行更多的任务),从逻辑上实现同时运行: 如,N个并发请求在一个两核CPU上: 并行 N个处理器分别同时执行N个任务,从物理上实现同时 ...

  5. java第七章多线程_第七章 多线程

    7 多线程 7.1 进程和线程 1.进程进程是一个正在执行中的程序 每一个进程都有一个执行顺序,该顺序是一个执行路径,或者叫做一个控制单元 2.线程线程就是进程中的一个独立控制单元 线程在控制着进程的 ...

  6. java动画闪烁_优化Java动画编程中的显示效果

    Java动画编程有多种实现方法,但它们实现的基本原理是一样的,即在屏幕上画出一系列的帧来造成运动的感觉.Java多线程技术是Java动画编程中普遍运用的技术,它在控制动画程序的流程和动画的显示效果方面 ...

  7. java实现分而治之_并发编程中一种经典的分而治之的思想!!

    写在前面 在JDK中,提供了这样一种功能:它能够将复杂的逻辑拆分成一个个简单的逻辑来并行执行,待每个并行执行的逻辑执行完成后,再将各个结果进行汇总,得出最终的结果数据.有点像Hadoop中的MapRe ...

  8. java coin介绍_代码示例中的Java 7:Project Coin

    java coin介绍 该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更 ...

  9. java final 类_在Java中,final修饰的类有什么特点

    展开全部 关于Java中的32313133353236313431303231363533e4b893e5b19e31333264663736final(2010-09-09 14:19:48)转载▼ ...

  10. java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创

    由于项目中用到了Applet与Servlet之间(客户端用Applet.Server端用Servlet)的通信,要求: 1:>客户端与服务端必须出Log. 2:>浏览器在加载Applet时 ...

最新文章

  1. linux 5 防火墙,CentOS 5 Linux iptables防火墙的配置
  2. 计算机二级能学到知识吗,2017年关于计算机二级msoffice学习知识点
  3. Linux开启路由转发功能(透明代理环境搭建)
  4. python的xpath用法_python之Xpath语法
  5. js text 和 html,JS DOM innerText和textContent的区别
  6. 英语计算机房和操场怎么读,计算机房对我们学习帮助很大. the , in studies , computer , room , helps , lot , a , our , us...
  7. linux脚本监控某一进程,linux监控某个进程的运行shell脚本
  8. 知乎: 如何评价阿里开源的企业级 Node.js 框架 egg? #18
  9. mysql 开启慢查明_mysql开启慢查询方法
  10. oracle last day比较,PLSQL LAST_DAY用法及代码示例
  11. 华为畅享8plus停产了吗_华为99元起换电池新增27款机型!同时新增一项实用功能...
  12. ch8 ProviderDemo
  13. Oracle DG Broker 进行 SwitchOver Failover,Failover后恢复主从同步
  14. [L4D]目录Missions中任务与地图关系
  15. php漂浮广告代码,JS实现网站悬浮广告的代码
  16. pytorch 网络结构可视化之netron
  17. tcp连接失败触发的异常
  18. javax.el.ELException Cannot convert 0e27d734-c316-4e13-8770-161092a2b3c4 of type class java.lang.Str
  19. 基于Vue+SpringCloudAlibaba微服务电商项目实战-商品服务-015:亿万级别商品详情页面实现动态优化
  20. 学习之响应式应用架构重构ReactiveX

热门文章

  1. 每日一皮:美丽的背后都妙不可言...
  2. 10道棘手的Java面试题,看看你能答对几个?
  3. 面试:InnoDB 中一棵 B+ 树可以存放多少行数据?
  4. 100G 免费技术学习资料大全分享 (2020 年最新)
  5. 开源监控系统 Prometheus 入门
  6. 推荐一款让你纵横Github的读码神器
  7. android仿微信的activity平滑水平切换动画,Android实现简单底部导航栏 Android仿微信滑动切换效果...
  8. 两个数据库字符集不一样,如何快速增量同步数据.
  9. Oracle分区表详解 .
  10. tensorflow兼容问题