导航:首页 > 编程语言 > java线程死掉

java线程死掉

发布时间:2023-08-07 00:42:28

java中线程的几种可用状态有哪些请大家解释一下。

我理解的有5种:
1、创建,刚创建出线程对象,比如new Thread()
2、就绪,调用了start方法,但内此时并不是调用就立马被运行,容在这期间要让cpu执行你,在等待执行过程叫就绪也叫等待。cpu并不是立马执行,而是串行以极快速度切换进程的运行着
3、运行,正在运行了,创建出线程,脱离了主线程,进入run,天高任鸟飞
4、死亡,异常终止,或run执行完毕
5、阻塞,运行过程中,交出cpu执行权休眠。为什么要休眠?某些某些特定的条件等待条件成熟,这时候手动让线程休眠进入阻塞状态
线程之间但状态是可任意转换的,阻塞醒来就是就绪,运行中又阻塞,就绪运行死亡,等状态可切换。
还有一种是进程的状态
1、就绪,创建子进程,等待cpu调度执行
2、运行,运行程序
3、僵尸,运行完毕死亡等待收尸
3、暂停,被信号暂停,等待信号唤醒
4、阻塞,等待条件成熟,人为休眠。条件满足或唤醒

进程和线程状态,非常类似

Ⅱ java 后台线程自己断掉一般是什么由原因引起的

1.所谓守护线程就是运行在程序后台的线程,程序的主线程Main(比方java程序回一开始启动时创建的答那个线程)不会是守护线程.

2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread 在运行,则虚拟机退出。
虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。

3.Main主线程结束了(Non-daemon thread),如果此时正在运行的其他threads是daemon threads,JVM会使得这个threads停止,JVM也停下.
如果此时正在运行的其他threads有Non-daemon threads,那么必须等所有的Non daemon线程结束了,JVM才会停下来.

4.总之,必须等所有的Non-daemon线程都运行结束了,只剩下daemon的时候,JVM才会停下来,注意Main主程序是Non-daemon线程.

5.默认产生的线程全部是Non-daemon线程.

Ⅲ java多线程死循环

你程序是:
服务端有不断的向客服端写信息,客户端有不断的读来自服务端的信息。
但是反过来,客户端没有不断的向服务端写信息。服务端也没有不断的读来自客户端的信息。

用线程解决:
在客户端新加一条线程,专门用来读取来自服务端的信息。
在服务端新加一条线程,专门用来读取来自客户端的信息。
而在各自的main()函数中只负责不断接收system.in信息,然后发送信息..

其实不用线程的。。我也改了下,改的好像较多。
运行步骤:
开server端,开kehu端。客房端先写入信息。。然后,你一句我一句。只能按这顺序。。这就是没用线程的结果。

代码如下:

服务端:
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args)
{
System.out.println("我是服务器");
try {
ServerSocket ss=new ServerSocket(8000);
Socket sk=ss.accept();
OutputStream os=sk.getOutputStream();
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os));
bw.write("你好,我是服务器,有什么需要我服务的嘛?\n");
bw.flush();

InputStream is=sk.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
while(true)
{
String str=br.readLine();
if(str.equals("bye")||str==null)break;
System.out.println("客户端说:"+str);

String sr="";
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
sr=br1.readLine();
bw.write(sr+"\n");
bw.flush();
}
}
catch (Exception e) {
System.out.println("客用户机己断开");
}
}
}

客户端:
import java.net.*;
import java.io.*;
public class kehu {
public static void main(String[] args)
{
System.out.println("我是客户");
try {
Socket s=new Socket(InetAddress.getByName(null),8000);
InputStream is=s.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
OutputStream os=s.getOutputStream();
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os));

String sr="";
while(true)
{
sr=br.readLine();
if(sr.equals("bye")||sr==null)break;
System.out.println("服务器说"+sr);

BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
sr=br1.readLine();
bw.write(sr+"\n");
bw.flush();

}

} catch (Exception e) {
System.out.println("服务器未开户或己关闭~");
}
}

}

Ⅳ java多线程死循环

如果你对一个线程 start 了,那你的程序中实际上有两个线程,还有一个main
当前线回程是main的子线程,实际上运答行时,子线程start以后,main的方法还是会继续往下执行,直到退出,当main退出以后,子线程也就死了,当你将死循环写在子线程里,相当与子线程死掉了,但不影响主线程的执行,主线程遇到退出一样退出了程序,当你写在主线程里的死循环,那就在那里循环,因为它没有退出语句 System.exit(0); 或者执行到了最后一个大括号

Ⅳ Java中一个线程执行死循环有什么后果

有两个线程在并发运行,一个线程执行的代码中含有一个死循环如:while(true)....当该线程在执行while(true)中代码时,另一个线程会有执行。

一.示例代码:

总结:若线程A先获得对象锁时,由于while循环,线程A一直在while空循环中。而线程B也因为无法获得锁而执行不了methodB()。

可以看出,如果在一个线程在synchronized方法中无法退出,无法将锁释放,另一个线程就只能无限等待了。

阅读全文

与java线程死掉相关的资料

热点内容
mp3文件多少字节 浏览:261
哪个饰品批发网站好 浏览:944
ef数据库备注 浏览:824
iae的配置文件 浏览:454
简单九宫格密码 浏览:89
word2010表格调整行距 浏览:960
cad只显示保存一个plt文件 浏览:500
街头篮球新版本技能兑换券 浏览:849
家庭如何做好网络营销 浏览:465
如何设置胎压监测数据 浏览:530
降噪工具 浏览:692
obs编程是什么意思 浏览:859
怎么看c4d打开了多少个文件 浏览:792
苹果银河高清壁纸 浏览:811
怎么从苹果电脑垃圾桶找回文件 浏览:771
接口文件不能用action写吗 浏览:85
svn代码提交规范 浏览:642
在宣读多少号文件时怎么读数字 浏览:921
网站中的局域网访问量是什么意思 浏览:397
苹果启动助理识别不到镜像文件 浏览:670

友情链接