在自学JAVA停止线程的运行方法看不懂!!!

流星永恒 2017-10-30 05:28:30
package com.yootk.demo;
class MyThread implements Runnable {
private boolean flag = true; // 定义标志位属性
public void run() { // 覆写run()方法
int i = 0;
while (this.flag) { // 循环输出
while (true) {
System.out.println(Thread.currentThread().getName() + "运行,i = "
+ (i++)); // 输出当前线程名称

}
}
}
public void stop() { // 编写停止方法
this.flag = false; // 修改标志位
}
}
public class StopDemo {
public static void main(String[] args) {
MyThread my = new MyThread(); // 实例化Runnable接口对象
Thread t = new Thread(my, "线程"); // 建立线程对象
t.start() ; // 启动线程
my.stop() ; // 线程停止,修改标志位
}
}
看不懂为什么要两个while??????
...全文
610 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wkend 2018-01-12
  • 打赏
  • 举报
回复
错误说明已经很清楚了啊, 变量 Mylock找不到,,,,
2dot5 2018-01-12
  • 打赏
  • 举报
回复
这个代码不靠谱,你stop根本停不下来 去 java 初级多线程看看吧
x630703224 2018-01-09
  • 打赏
  • 举报
回复
江湖告急, 在学线程的死锁的时候报这个 怎么解决
class Test implements Runnable
{
private boolean flag ;

Test(boolean flag)
{
this.flag = flag;
}
public void run()
{
if(flag)
{
synchronized(Mylock.locka)
{
System.out.println("if locka...");

synchronized(MyLock.lockb)
{
System.out.println("if lockb...");
}
}
}
else
{
synchronized(MyLock.lockb)
{
System.out.println("else lockb...");

synchronized(MyLock.locka)
{
System.out.println("else locka...");

}
}
}
}
}

class MyLock
{
public static final Object locka = new Object();
public static final Object lockb = new Object();

}
class DeadLockTest
{
public static void main (String args[])
{
Test a = new Test(true);
Test b = new Test(false);
Thread t1 = new Thread(a);
Thread t2 = new Thread(b);
t1.start();
t2.start();

}
}

DeadLockTest.java:13: 错误: 找不到符号
synchronized(Mylock.locka)
^
符号: 变量 Mylock
位置: 类 Test
DeadLockTest.java:13: 错误: 非法的类型开始
Lie_lei 2018-01-08
  • 打赏
  • 举报
回复
while (this.flag) { //这个判断就是控制着线程是否停止, while (true) { System.out.println(Thread.currentThread().getName() + "运行,i = " + (i++)); // 输出当前线程名称 } 起始这么写没有意义 while (flag) {//这样就好了 System.out.println(Thread.currentThread().getName() + "运行,i = " + (i++)); // 输出当前线程名称 }
砑呀 2017-10-30
  • 打赏
  • 举报
回复
外层那个while没什么鸟用,停止判断写在内层那个while就行了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧