
正文
java将代码放进线程中 java实现线程代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java中的线程问题
这里往银行汇款,需要注意线程安全问题,当一个顾客汇款时,不能接受另一个顾客的汇款,否则就会出现错误(这里用 Thread.sleep(1000);)放大了出错误的可能,所以要给方法加锁
public class Customer implements Runnable {
public void run() {
for (int i = 0; i 3; i++) {
add(100);
}
}
private static int sum=0;
public static synchronized void add(int n){
int temp=sum;
temp+=n;
try{
Thread.sleep(1000);
}
catch(Exception e){}
sum=temp;
System.out.println("sum"+sum);
}
public static void main(String[] args){
Customer c1 = new Customer();
Customer c2 = new Customer();
Thread tc1 = new Thread(c1);
Thread tc2 = new Thread(c2);
tc1.start();
tc2.start();
}
}
如果不允许修改该原始add方法,也可以用给代码块加锁的方式来解决
这里要注意synchronized (Customer.class)括号 里面的对象对于两个线程对象tc1,tc2是不可变的
public class Customer implements Runnable {
public void run() {
for (int i = 0; i 3; i++) {
synchronized (Customer.class) {
add(100);
}
}
}
private static int sum=0;
public static void add(int n){
int temp=sum;
temp+=n;
try{
Thread.sleep(1000);
}
catch(Exception e){}
sum=temp;
System.out.println("sum"+sum);
}
public static void main(String[] args){
Customer c1 = new Customer();
Customer c2 = new Customer();
Thread tc1 = new Thread(c1);
Thread tc2 = new Thread(c2);
tc1.start();
tc2.start();
}
}
相关问答
Q1: java为什么有些代码不能在子线程中运行
1. 因为Java中的多线程是基于线程安全的,而子线程可能会对主线程的数据进行修改,从而导致线程不安全。
2. 子线程可能会访问到主线程中的未初始化的变量,从而导致程序出错。
3. 子线程可能会访问到主线程中的未同步的变量,从而导致程序出错。
4. 子线程可能会访问到主线程中的不可变的变量,从而导致程序出错。
Q2: java可以将新代码加入到正在运行的程序中吗?
如果你是在eclipse或Myeclipse中java将代码放进线程中,新代码是指直接在某个方法中增加几行操作(代码不能涉及需要引入java将代码放进线程中的新对象java将代码放进线程中,在方法外面新增的方法也不行)。那么是可以不用重启项目。至于你说是程序,那么就不好说了。运行中的程序是不可能的,你说法可能有问题。
java将代码放进线程中的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java实现线程代码、java将代码放进线程中的信息别忘了在本站进行查找喔。






