2 clcurie 11 clcurie_11 于 2012.11.21 13:04 提问

Service中线程的唯一实例

我在service中初始化一个新的Thread。但是当我重启service时,新的被创建了,同时系统也崩溃了,因为我使用了照相机功能。如何让线程中只有一个实例呢?
当关闭在线程中创建的service时。线程也同时被关闭吗?

2个回答

csh_34
csh_34   2012.11.21 16:17
已采纳

你应该使用一个lock或者一个静态变量:

private static boolean isThreadRunning;

在你的service里写入以下方法:

if(isThreadRunning)
   return;

Thread t=new Thread(new Runnable(){

protected void run(){
   isThreadRunning=true;
   while(yourcondition){
     //thread代码
   }
   isThreadRunning=false;
   //在这个个线程结束后,你想启动另一个线程,你应该在这贴出信息,来启动另外一个线程    }

});
shen332401890
shen332401890   2012.12.03 14:06

单例 解决问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Sueyexin
Sueyexin 请参看如何回答http://ask.csdn.net/pages/how_to_answer
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
保证EF上下文实例是线程内唯一
public class DbContextFactory { /// /// 保证EF上下文实例是线程内唯一。 /// /// public static DbContext CreateDbContext() { DbContext dbContext = (DbContex
MVC保证线程内实例唯一(5)
原 [html] view plaincopyprint? using System;   using System.Collections.Generic;   using System.Data.Entity;   using System.Linq;   using System.Text;   using Dulei.Model
C# 线程内唯一对象(HttpContext)
线程内唯一对象(HttpContext),HttpContext对象是在主线程进入请求管道之前时创建的,在主线程中可以直接用,但在子线程中(其他类中)不能用。 如果要在子线程中获取物理路径(使用HttpContext对象),就使用HostingEnvironment.MapPath("/Images/aa.jpg")函数。
ASP EF框架,数据库操作类(上下文类)的实例创建,线程内唯一对象(HttpContext)
因为多个数据库操作类实例(上下文实例),多个实例同时操作数据库可能会引起数据冲突,所以要用一个(同一个)操作类实例(工作单元模式,多次操作数据库,操作多张表,但只链接一次数据库,提高性能。(延迟加载(查询),打上删除、修改标记,添加操作,然后利用同一个数据库操作类.SaveChanges()一次性保存到数据库,这样就只链接了一次数据库,提高了性能))。 如果是所有用户都共用一个实例的话,那么实例
EF上下文对象线程内唯一性与优化
在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,这也加是很多人的代码中习惯在使用上下文对象时,习惯将对象建立在using中,这样效率很低,其次会造成数据混乱,每次创建的对象执行相应的数据库操作,与此同时,其他的EF对象内获得的数据可能已经是“过期”的了。即这个数据已经变动过。这就是脏读。         为了解决这个问题,关键就是上下文对象的创建问题。         这里
线程中调用service方法出错
Thread中注入失败
线程,进程,单线程,多线程,附有并发例子
本篇博客是根据自己的理解对这块知识做一个总结,如果有不妥的地方请指出,定会改正。1、线程和进程1.1、线程和进程定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和
用session监听实现唯一登录及普通类调用Service层的方法的实现思路
最近在写项目的时候遇到一个问题:如何实现用户唯一登录?一开始的想法是给t_user表添加一个字段login_status(登录状态),用户登录前去查询t_user的login_status的值,login_status为未登录状态,则可以进行登录;否则,不能登录。但是在用户非正常退出的情况下(即用户未点击“退出”按钮或浏览器非正常关闭),login_status的值一直为登录状态,用户无法进行登录...
spring线程池在新的线程中获取不到注入的实例
使用线程池后,在新创建的线程中获取不到spring的实例Bean,解决方案备忘记录。
ThreadLocal --每个线程拥有自己独立的对象
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。  另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作