/**
* 多線程成共享數據 面試題
* 方式
*/
public static void main(String[] args) {
ShareData
new Thread(data)
new Thread(data)
}
}
class ShareData
private int count =
@Override
public void run() {
while(true){
count
}
}
}
××××××××××××××××××××××××××××××××××××××××××××
public class MultiThreadShareData
/**
* 多線程成共享數據(共享數據是指同一個對象)
* 面試題
* 第二種方式
設計
*/
public static void main(String[] args) {
//共同對象
final ShareData data = new ShareData()
/* 加 j */
new Thread(new Runnable(){//內部類
@Override
public void run() {
data
}
})
/* 減 j */
new Thread(new Runnable(){
@Override
public void run() {
data
}
})
}
}
class ShareData {
private int j=
public synchronized void add(){
j++;
}
public synchronized void sub(){
j
}
}
demo
/**
* 第二種方式
設計
* @author Administrator
* 這裡
*/
public class ThreadTest
private int j;
public static void main(String args[]) {
ThreadTest
//必須通過外部類的對象才能實例化內部類
Inc inc = tt
Dec dec = tt
for (int i =
Thread t = new Thread(inc)
t
t = new Thread(dec)
t
}
}
private synchronized void inc() {
j++;
System
}
private synchronized void dec() {
j
System
}
//內部類 增
class Inc implements Runnable {
// 可以操作外部類的變量 j
public void run() {
for (int i =
inc()
}
}
}
//內部類 減
class Dec implements Runnable {
// 可以操作外部類的變量 j
public void run() {
for (int i =
dec()
}
}
}
}
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27451.html