线程-下面是一段Java代码,里面有几处看不懂,望大神指教,不胜感激。

问题描述

下面是一段Java代码,里面有几处看不懂,望大神指教,不胜感激。
package 线程;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class TestThread extends JFrame {
/**
*
*/
//private static final long serialVersionUID = 1L;
JPanel jPanel1 = new JPanel();
JButton startButton = new JButton(""start"");
JButton stopButton = new JButton(""stop"");
MyThread thread = null;
private boolean isContinue;
public TestThread() {
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}

private  void jbInit() throws Exception {    startButton.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {            startButton_actionPerformed(e);        }    });    stopButton.addActionListener(new java.awt.event.ActionListener() {        public void actionPerformed(ActionEvent e) {            stopButton_actionPerformed(e);        }    });    Container con=getContentPane();    con.add(jPanel1 BorderLayout.CENTER);    jPanel1.add(startButton);    startButton.setBounds(36 105 82 30);    jPanel1.add(stopButton);    stopButton.setBounds(160 108 100 31);} void startButton_actionPerformed(ActionEvent e) {    if (thread != null)//这是啥意思?        isContinue=false;    thread = new MyThread();//为什么我改为MyThread thread=new MyThread();运行会报错?    thread.start();}void stopButton_actionPerformed(ActionEvent e) {    if (thread != null)        isContinue=false;    thread = null;//这又是啥意思?}public static void main(String[] args) {    TestThread test = new TestThread();    test.setBounds(300300300 80);    test.setVisible(true);}private class MyThread extends Thread {    public MyThread() {        //isContinue=true;//为什么不在意开头哪里就定义iscontinue=true?    }    public void run() {        System.out.println(""nn"");        while (true && isContinue) {            try {                Thread.sleep(200);            } catch (InterruptedException e) {                e.printStackTrace();            }            System.out.println(""Java 编程词典thttp://www.mrbccd.com"");        }    }}

}

解决方案

if (thread != null)//这是啥意思? 如果线程不为空
thread = new MyThread();//为什么我改为MyThread thread=new MyThread();运行会报错?
上面已经定义我thread 现在定义thread 生命周期是在当前函数里面。出了函数就没有了,所以会运行错误 。

thread = null;//这又是啥意思?
线程为空

/isContinue=true;//为什么不在意开头哪里就定义iscontinue=true?
这个看不懂你说的意思?

解决方案二:
回答你那个再次定义MyThread的错误,因为你已经定义了一个成员变量是这个名字,所以再次定义就会报错,然后其他的错误是判断线程存在与否,不存在时申请,存在时不申请,释放的时候相反就可以了!

解决方案三:
我觉得你有很多东西不是很清楚。。。
首先,像thread,isContinue这样的成员变量,在一个方法中被改变,对所有方法生效。大家看到或用到的是同一个东西。
其次,你要明白,你点按钮所做的事情和MyThread#run所做的事情是并行的,没有先后顺序(除了第一次启动MyThread#run)。
并且,这两个并行的事情之间需要交互,就有了isContinue。
还有,这是桌面程序,你程序的入口有多个(多个按钮),虽然一次只能进入一个方法(入口),但是它们的运行没有先后顺序。谁先运行,谁后运行,谁又再次运行,完全取决于画面操作者。程序角度无法确定。除非你加个标识变量,来告诉别的方法(入口),我已经做过什么了。

知道了这些,你自己再想想吧,自己想明白的东西才是真明白。
ps:我觉得这个程序对你来说太难。

解决方案四:
加油,慢慢看懂,不懂度娘,争取弄懂。
ps:我觉得这个程序对你来说太难。

解决方案五:
thread = new MyThread();//为什么我改为MyThread thread=new MyThread();运行会报错?原因: 全局变量已经声明了一个:MyThread thread = null;你再声明自然就重复定义了

private boolean isContinue; 存储状态的变量,应该是根据情况需要来对其赋予不同的状态,后续操作以此做出判断依据

thread = null;//这又是啥意思? 我浅显的理解:停止不需要的线程

时间: 2024-11-03 00:25:43

线程-下面是一段Java代码,里面有几处看不懂,望大神指教,不胜感激。的相关文章

源代码-按书上写了一段代码java异常处理,不知道为什么不能运行,求大神指教

问题描述 按书上写了一段代码java异常处理,不知道为什么不能运行,求大神指教 源代码如下: package com.Sixping.Ncre; import java.io.*; public class ExceptionCatch { public static void main(String[] args) { try { FileNotFoundException fis = new FileNotFoundException("text"); System.out.pri

Eclipse中代码要无法连接mysql数据库,求大神指教

问题描述 Eclipse中代码要无法连接mysql数据库,求大神指教 结果显示是这样:Exception in thread ""main"" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Meth

协议-Android软件使用TCP进行通信,连接不到服务端,在同一子网,代码跟异常日志都有,请大神指教

问题描述 Android软件使用TCP进行通信,连接不到服务端,在同一子网,代码跟异常日志都有,请大神指教 客户端线程:class BB1 extends Thread{ public void run() { try { System.out.println(""hahahha""); Socket client=new Socket(ipadressPORT); System.out.println(client.getPort()); mingling=&qu

arm-基于lpc2114做sht11在lcd1602显示代码调试驱执行不了,求大神指教

问题描述 基于lpc2114做sht11在lcd1602显示代码调试驱执行不了,求大神指教 /**************************************************************************** 基于LPC2114做的一个SHT11温湿度传感器在LCD1602显示 ****************************************************************************/ #include "con

string-关于java字符串分割,参数为数组,求大神指教

问题描述 关于java字符串分割,参数为数组,求大神指教 public String[] splitstr (String dist,String[] arr){ //分割字符串 dist 用arr里面含有的字符分割 } 这个方法该如何实现 最好能考虑到特殊字符的处理 , 解决方案 java中有spit方法,结合spit方法和正则表达式处理

页面上有个textarea,在里面写java代码,然后如何动态编译执行这段java代码??

问题描述 页面上有个textarea,在里面写java代码,然后如何动态编译执行这段java代码?? 页面上有个textarea,在里面写java代码,然后如何动态编译执行这段java代码?? 解决方案 可以使用一些前端的模板引擎,java是编译的 解决方案二: ajax提交客户端输入的代码动态执行就行,看下面参考 ajax提交http://www.w3school.com.cn/jquery/ java中怎么执行字符串中的代码http://bbs.csdn.net/topics/3903563

得到一段java代码,哪位大侠可以帮忙看看它的作用?

问题描述 得到一段java代码,哪位大侠可以帮忙看看它的作用?packageutil;importjava.io.*;importjava.util.Enumeration;importjava.util.Hashtable;importjavax.microedition.io.Connector;importjavax.microedition.io.HttpConnection;importnetpay.a;//Referencedclassesofpackageutil://bpubli

java-求解 这段 JAVA 代码 怎么改 才能运行 太晕了

问题描述 求解 这段 JAVA 代码 怎么改 才能运行 太晕了 public static char[] a(char[] paramArrayOfChar) { char[] arrayOfChar1 = new char[12]; char[] arrayOfChar2 = new char[12]; arrayOfChar2[0] = '?'; arrayOfChar2[1] = '?'; arrayOfChar2[2] = 'o'; arrayOfChar2[3] = '/'; arra

java8-谁能帮我解释下这段Java代码

问题描述 谁能帮我解释下这段Java代码 public class CollectionDemo { public static void main(String[] args) { Collection list= new ArrayList(); list.add("a"); list.add("b"); list.add("c"); list.iterator().forEachRemaining(lang->System.out.p