java多執行緒學習小案例
多執行緒的小練習
需求:實現一次修改一次輸出
主要知識點:多執行緒,同步,等待和喚醒
public class inAndOut {
/**
* @param args
*/
public static void main(String[] args) {
// 1、兩個執行緒控制同一個物件 引數傳入
// 2、同步 變性問題(賦值到一半就輸出了)
// 3、一次修改一次輸出 wait 和 notify
Test tt = new Test(); // 給兩個不同現成提供同一個物件
In in = new In(tt);
Out out = new Out(tt);
Thread ti = new Thread(in);
Thread to = new Thread(out);
ti.start();
to.start();
}
}
class In implements Runnable{
private Test r;
private boolean a = true;
@Override
public void run() {
while(true){
synchronized (r) { //處理變性問題
if(r.b){ // 修改為一條輸出一條 現成的等待和喚醒 in執行時,out等待。 執行完後喚醒,out執行,in等待。。。。
if(a){ // 模擬不同的輸入
r.name = "zhangsan";
r.sex = "nan";
a = false;
}else{
r.name = "lisi";
r.sex = "nv";
a=true;
}
r.b=false;
r.notify(); // 喚醒程式
}else{
try {
r.wait(); //當前程式等待
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
In(Test r){
this.r = r;
}
}
class Out implements Runnable{
private Test r;
@Override
public void run() {
while(true){
synchronized (r) {
if(!r.b){
System.out.println(r.name+"..."+r.sex);
r.b = true;
r.notify();
}else{
try {
r.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
Out(Test r){
this.r = r;
}
}
class Test{
String name;
String sex;
boolean b = true;
}
相關文章
- Java多執行緒學習(一)Java多執行緒入門Java執行緒
- Java多執行緒學習Java執行緒
- Java多執行緒學習——執行緒通訊Java執行緒
- Java多執行緒學習(2)執行緒控制Java執行緒
- #大學#Java多執行緒學習02(執行緒同步)Java執行緒
- Java 多執行緒NIO學習Java執行緒
- Java 多執行緒學習筆記Java執行緒筆記
- Java多執行緒學習(3)執行緒同步與執行緒通訊Java執行緒
- Java中多執行緒的案例Java執行緒
- Java多執行緒學習(八)執行緒池與Executor 框架Java執行緒框架
- Java多執行緒學習筆記(自用)Java執行緒筆記
- 多執行緒學習一(多執行緒基礎)執行緒
- Java多執行緒學習(1)建立執行緒與執行緒的生命週期Java執行緒
- 【Java】多執行緒複習Java執行緒
- java 執行緒學習Java執行緒
- 最全java多執行緒學習總結1--執行緒基礎Java執行緒
- iOS 多執行緒-學習iOS執行緒
- 多執行緒學習(二)執行緒
- 多執行緒學習一執行緒
- Thinking in Java--Java多執行緒學習筆記(1)ThinkingJava執行緒筆記
- Java多執行緒-執行緒中止Java執行緒
- Thinking in Java---多執行緒學習筆記(2)ThinkingJava執行緒筆記
- Java多執行緒學習(六)Lock鎖的使用Java執行緒
- Java多執行緒學習(三)volatile關鍵字Java執行緒
- 【Java多執行緒】輕鬆搞定Java多執行緒(二)Java執行緒
- C++多執行緒學習C++執行緒
- Java 多執行緒學習(執行緒通訊——消費者和生產者)Java執行緒
- Java多執行緒學習(五)執行緒間通訊知識點補充Java執行緒
- java——多執行緒Java執行緒
- java多執行緒Java執行緒
- Java - 多執行緒Java執行緒
- java 多執行緒Java執行緒
- java多執行緒的入門小記Java執行緒
- Java多執行緒之執行緒中止Java執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- java多執行緒9:執行緒池Java執行緒