public void run() {
		data[0] = (Long.MAX_VALUE/crewObj.getThreads()) * id - crewObj.getRandomOne();
		
		long speed = 0; int time;
		int time_prev = 0;
		while(!isStopped) {
			if(crewObj.isDone())
				break;
			
			if(Utils.isHashAccepted(crewObj.hashFunction.computeHash(Utils.createBytes(data)), crewObj.getDiff())) {
				mesgPrint("Accepted!");
				crewObj.setResult(data[0]);
				break;
			}
			
			data[0]++;
			speed++;
			
			time = (int)(System.currentTimeMillis()/1000);
			if(time > time_prev) {
				time_prev = time;
				mesgPrint("Current speed: " + (speed > 9999? (getMHash(speed) + " MHash/s"): (speed + " Hash/s")));
				crewObj.MHash += getMHashRaw(speed);
				crewObj.hashSpeed += speed;
				crewObj.threadTick++;
				if(crewObj.threadTick == crewObj.getThreads()) {
					System.out.println("> " + (crewObj.hashSpeed > 9999? (getMHashCooked(crewObj.MHash) + " MHash/s, ") : (crewObj.hashSpeed + " Hash/s, "))
					        + crewObj.getThreads() + (crewObj.getThreads() == 1? " thread": " threads"));
					crewObj.MHash = 0.0f;
					crewObj.hashSpeed = 0;
					crewObj.threadTick = 0;
				}
				speed = 0;
			}
			
		}
	}