线程安全
是指: 在多个线程进行的情况下对全局变量或静态变量进行写的操作的时候出现的数据上的问题,就是线程安全的问题,在读的时候不会出现线程的问题;
关键字:synchronized;
注意事项:
在线程中run 方法运行的时候 synchronized修饰代码的时候一定要放在我们修饰的代码地方,如果将整个run 方法进行修饰,那么线程变成了单例模式(单线程模式);
同步代码块:
即:
public void run() {
while (count > 1) {
try {
Thread.sleep(40);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (this) {
System.out.println(Thread.currentThread().getName() + "正在出售第"
+ (100 - count + 1) + "张票");
count--;
}
}
同步方法
即:
package com.infree.sy;
class CreateRunnable implements Runnable{
private int count = 100; // 一百张火车票
/*
* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run (){
while(count>1){
try {
Thread.sleep(40);
} catch (InterruptedException e) {
e.printStackTrace();
}
syncSale();
}
}
public synchronized void syncSale(){
System.out.println(Thread.currentThread().getName()+"正在买"+(100-count+1)+"张票");
count--;
}
}
public class Demosync1 {
public static void main(String[] args) {
CreateRunnable createRunnable = new CreateRunnable();
Thread thread1 = new Thread(createRunnable);
Thread thread2 = new Thread(createRunnable);
thread1.start();
thread2.start();
}
}