activity线程运行大约10分钟后,报错:pthread_create failed: clone fai

Android 码拜 5年前 (2016-05-17) 922次浏览
activity中的线程运行大约10分钟后,程序崩溃。下面的线程问题出在哪儿?
有两个报错:
libc
pthread_create failed: clone failed: Out of memory
art
Throwing OutOfMemoryError “pthread_create (1040KB stack) failed: Out of memory”

protected void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.web_view);
			startReconnect();//调用线程
}
	private void startReconnect() {

		scheduler = Executors.newSingleThreadScheduledExecutor();

		scheduler.scheduleAtFixedRate(new Runnable() {

			@Override
			public void run() {
				//do somethings
			connect();//调用
			}
		}, 0 * 1000, 1 * 1000, TimeUnit.MILLISECONDS);

	}
	private void connect() {
		new Thread(new Runnable() {
			@Override
			public void run() {        
		        	while(true){	        
		        
		        	String topic = subscriber.recvStr();
		                
		                 String data = subscriber.recvStr();
		                
		                 System.out.println("客户端="+data);
			         ;
		        	}	        
			}
		}).start();
	}
解决方案

10

内存溢出了:Out of Memory…………估计是connect方法,你不断的new Thread,而不终止不用的线程,因此,消耗的内存渐渐增多,最终溢出

20

线程加到线程池里进行关系吧,

10

楼上正解 ,,当需要new  很多线程时  ,就应该用线程池 处理

10

不停的new Thread to start 不行吧

30

引用:

每次在在哪儿关闭(停止、注销)线程?

嗯,用线程池是最好最方便的解决方案,不过加入你非要不用线程池的话,可以调用isAlive方法检测这个线程能否活动,假如是的话,将他=null;然后新建同一个线程。理论上本人是这么想的,实际操作没试过。
最后再加一句: 大力推荐使用线程池,毕竟官方提供了线程池策略就是解决你这种多个线程操作运行的问题的。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明activity线程运行大约10分钟后,报错:pthread_create failed: clone fai
喜欢 (0)
[1034331897@qq.com]
分享 (0)