导航:首页 > 编程语言 > 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线程死掉相关的资料

热点内容
圆弧刀东槽如何编程 浏览:870
js怎么单击改变标签里的文字 浏览:760
实例配置文件里的sid是什么 浏览:43
ps文件模糊 浏览:192
叶檀财经推出过什么购物APP 浏览:875
linux硬盘检测 浏览:431
如何用路由器降低网络延迟 浏览:601
aix分区root密码 浏览:439
运动鞋买鞋上什么app 浏览:904
NSA工具下载 浏览:918
函数代码在哪个文件夹 浏览:213
微信应用怎么代码添加快捷方式 浏览:371
用数据说话是最有力的什么 浏览:27
图片文件被锁定无法打开 浏览:768
wr886nv2升级 浏览:490
移动硬盘视频文件无法删除 浏览:417
如何查看网络监控 浏览:132
打印机如何连接到网络打印机 浏览:181
vmlinux安装tools 浏览:768
波形文件转mp3 浏览:803

友情链接