java 创建的线程为什么会结束
我随便写的一个程序,主类创建了一个窗口,窗口显示后创建了一个线程,当我点击窗口关闭的时候,这个线程也结束了,是什么原因让这个线程结束的?这个线程我没有指定是后台线程,窗口关闭了,这个线程应该还在运行啊?
主类:
public class TT {
public static void main(String[] args)
{
// TODO Auto-generated method stub
new ss().init();
}
}
public class ss extends JFrame
{
private JTextArea msgArea;
private JTextField msgField;
public ss()
{
}
public void init()
{
this.msgArea=new JTextArea(20,50);
this.msgField=new JTextField(15);
JPanel pa=new JPanel();
pa.add(new JScrollPane(this.msgArea));
pa.add(this.msgField);
this.add(pa);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
RR r=new RR();
r.start();
System.out.println(r.isDaemon()); //输出false 说明不是后台线程
}
}
线程:
public class RR extends Thread
{
public void run()
{
while(true)
{
}
}
}
主类:
public class TT {
public static void main(String[] args)
{
// TODO Auto-generated method stub
new ss().init();
}
}
public class ss extends JFrame
{
private JTextArea msgArea;
private JTextField msgField;
public ss()
{
}
public void init()
{
this.msgArea=new JTextArea(20,50);
this.msgField=new JTextField(15);
JPanel pa=new JPanel();
pa.add(new JScrollPane(this.msgArea));
pa.add(this.msgField);
this.add(pa);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
RR r=new RR();
r.start();
System.out.println(r.isDaemon()); //输出false 说明不是后台线程
}
}
线程:
public class RR extends Thread
{
public void run()
{
while(true)
{
}
}
}
...全文
相关推荐
Java多线程--让主线程等待所有子线程执行完毕在执行
首先,让我们理解为什么简单的`t.join()`会导致顺序执行。`Thread.join()`方法的作用是让调用它的线程(即主线程)阻塞,直到被调用的线程(子线程)执行完毕。
Java多线程start()方法原理解析
当线程创建或结束后,线程状态就会改变,这时如果再次调用start()方法,将抛出IllegalThreadStateException异常。
java从入门到精通学习笔记-Lesson5(多线程).pdf
由于线程调度的不确定性,`main`方法可能在`MyThread`的`run()`方法之前执行,这就是为什么`main`线程的名字先被打印出来。
java线程1-10-720p版本
首先,我们从"05_一天学会线程_为什么是start.mp4"开始,这个视频可能讲解了Java中启动线程的关键方法——`start()`。
Java中启动线程start和run的两种方法
这也是为什么 start() 方法可以创建一个新的线程,而 run() 方法不能的原因。start() 方法和 run() 方法都是启动线程的方法,但是它们的作用和实现方式不同。


Java SE
