import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;public class vote extends HttpServlet implements Runnable {
long candidate1=0;
long candidate2=0;
long candidate3=0;
boolean stopflag=false;
Thread t;
public void init(){
t=new Thread(new vote());
t.start();
}
public void run() {
while(true){
candidate1=100;
candidate2=(long) (candidate2+ Math.random()*10);
candidate3=(long) (candidate3+ Math.random()*10);
System.out.println("c1:"+candidate1); try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html");
response.setHeader("refresh","5");
PrintWriter out =response.getWriter();
System.out.println(candidate1);
out.println(
"<html>"+
"<head><title> show vote rate! </title></head>"+
"<body><center>"+
"<h1> Vote</h1>"+
new Date()+"<br>"+
"candidate1:"+candidate1+"<br>"+
"candidate2:"+candidate2+"<br>"+
"candidate3:"+candidate3+"<br>"+
"</center></body></html>"
);
}
}就是线程里面产生的数在doGet里面读不到
import javax.servlet.http.*;
import java.util.*;
import java.io.*;public class vote extends HttpServlet implements Runnable {
long candidate1=0;
long candidate2=0;
long candidate3=0;
boolean stopflag=false;
Thread t;
public void init(){
t=new Thread(new vote());
t.start();
}
public void run() {
while(true){
candidate1=100;
candidate2=(long) (candidate2+ Math.random()*10);
candidate3=(long) (candidate3+ Math.random()*10);
System.out.println("c1:"+candidate1); try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html");
response.setHeader("refresh","5");
PrintWriter out =response.getWriter();
System.out.println(candidate1);
out.println(
"<html>"+
"<head><title> show vote rate! </title></head>"+
"<body><center>"+
"<h1> Vote</h1>"+
new Date()+"<br>"+
"candidate1:"+candidate1+"<br>"+
"candidate2:"+candidate2+"<br>"+
"candidate3:"+candidate3+"<br>"+
"</center></body></html>"
);
}
}就是线程里面产生的数在doGet里面读不到
解决方案 »
- java如何验证正负整数11位,小数6位?正则表达式可以吗?
- IO有关的问题
- 怎么把xml请求字符串放在http request流中传递到指定的servlet
- java 两台服器间的缓存同步问题
- SSH上机考试,高分求此项目!
- struts1.2 actionForm如何获得选中radio的值
- [PetStore2.0]新手安装问题
- osworkflow是否支持split后的step间XOR操作,有人实现过这个功能吗?
- 通用方法抽象
- 进到Tomcat的manager页面不能启动admin,http://localhost:8080/admin访问失
- 学了java基础,想进一步学J2EE,应该怎么学
- 正则表达式分析网页问题
t.start();
这里new了一个新的vote对象, 你当前的doGet()中用的还是本voite的值。。肯定一直都是0了
还有你这种写法,long candidate1=0;
long candidate2=0;
long candidate3=0; 这3个变量在多线程下是非线程安全的