public class Test implements Runnable {
private static volatile String msg = "线程一打印A";
private String message;
private String next;
public Test(String message, String next) {
this.message = message;
this.next = next;
}
public static void main(String[] args) {
new Thread(new Test("线程一打印A", "线程二打印B")).start();
new Thread(new Test("线程二打印B", "线程三打印C")).start();
new Thread(new Test("线程三打印C", "线程一打印A")).start();
}
public void run() {
for(int i = 0; i < 10;) {
if(this.message.equals(Test.msg)) {
System.out.println(this.message);
Test.msg = next;
i++;
}
}
}
}
这样写不需要同步代码, 应该会更自然点
public class Main001 {
public static void main(String[] args) {
Threands t = new Threands();
new Thread(t).start();//线程1
new Thread(t).start();//线程2
new Thread(t).start();//线程3
}
}
class Threands implements Runnable{
private String[] arr = {"ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC"};
private int i = 0;
public synchronized void run(){
for( ; i < arr.length; i++){
System.out.print(arr[i]);
}
}
}
//或者更简单
class Threands implements Runnable{
//private String[] arr = {"ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC"};
private String str = "ABC";
private int i = 0;
public synchronized void run(){
for( ; i < 10; i++){
System.out.print(str);
}
}
}
public class TestThread {
private static String status = "A";
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
int count=10;
for(int i=0;i
synchronized (status) {
if(status.equals("A")){
System.out.print("A");
status="B";
i++;
}
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
int count=10;
for(int i=0;i
synchronized (status) {
if(status.equals("B")){
System.out.print("B");
status="C";
i++;
}
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
int count=10;
for(int i=0;i
synchronized (status) {
if(status.equals("C")){
System.out.print("C");
status="A";
i++;
}
}
}
}
}).start();
}
是什么用了