创建2个线程a,b,2个线程同时写数据到write.txt,a线程写入字符串"How are you",b线程写入字符串"I am fine!",2个线程有序执行,一句How are you,对应一句 I am fine!。
package bi.shi.test;
import java.io.FileWriter;
import java.io.PrintWriter;
/**
* @program: bi_shi_test
* @description:
* @author: xin yi
* @create: 2021-08-26 20:21
*/
public class Test02{
/**
* 创建2个线程a,b,
* 2个线程同时写数据到write.txt,
* a线程写入字符串"How are you",
* b线程写入字符串"I am fine!",
* 2个线程有序执行,一句How are you,对应一句 I am fine!。
*/
/*采用wait()和notify()方法解决两个线程交替执行*/
public static void main(String[] args) {
/**
* 创建锁对象
*/
Object object = new Object();
/**
* 创建线程a
*/
new Thread(new Runnable() {
@Override
public void run() {
try {
while(true){
synchronized (object){
System.out.println("How are you");
FileWriter fileWriter = new FileWriter("g://write.txt", true);
PrintWriter printWriter = new PrintWriter(fileWriter);
/*a线程写入字符串"How are you"*/
printWriter.print(new StringBuilder().append("How are you").toString() + "\n");
fileWriter.close();
printWriter.close();
object.notify();
object.wait();
}
Thread.sleep(1000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
},"a").start();
/**
* 创建线程b
*/
new Thread(new Runnable() {
@Override
public void run() {
try {
while(true){
synchronized (object){
System.out.println("I am fine!");
FileWriter fileWriter = new FileWriter("g://write.txt", true);
PrintWriter printWriter = new PrintWriter(fileWriter);
/*b线程写入字符串"I am fine!*/
printWriter.print(new StringBuilder().append("I am fine!").toString() + "\n");
fileWriter.close();
printWriter.close();
object.notify();
object.wait();
}
Thread.sleep(1000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
},"b").start();
}
}