67,513
社区成员
发帖
与我相关
我的任务
分享
public class SyncThread implements Runnable {
public synchronized void run() {
for (int i = 0; i < 5; i ++) {
try {
System.out.println(Thread.currentThread().getName() + ":" +i);
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class SyncThreadTest {
@Test
public void test1(){
SyncThread syncThread0 = new SyncThread();
SyncThread syncThread1 = new SyncThread();
Thread thread0 = new Thread(syncThread0, "SyncThread0");
Thread thread1 = new Thread(syncThread1, "SyncThread1");
thread1.start();
thread2.start();
}
}
public class SyncThread implements Runnable {
public synchronized void run() {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < 5; i ++) {
try {
stringBuffer.append(Thread.currentThread().getName());
stringBuffer.append(":");
stringBuffer.append(i);
stringBuffer.append(System.getProperty("line.separator"));
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
File file = new File("C:\\Users\\thinkpad\\Desktop\\test.txt");
try {
FileWriter writer = new FileWriter(file,true);
writer.write(stringBuffer.toString());
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
SyncThread syncThread0 = new SyncThread();
SyncThread syncThread1 = new SyncThread();
Thread thread0 = new Thread(syncThread0, "SyncThread0");
Thread thread1 = new Thread(syncThread1, "SyncThread1");
thread0.start();
thread1.start();
thread0和thread1分别对应了syncThread0和syncThread1两个实例, 这两个线程完全独立的,运行时并不是进入同一个run方法。
运行结果:
SyncThread0:0
SyncThread1:0
SyncThread0:1
SyncThread1:1
SyncThread0:2
SyncThread1:2
SyncThread0:3
SyncThread1:3
SyncThread0:4
SyncThread1:4
只用一个SyncThread实例:
public static void main(String[] args) {
SyncThread syncThread0 = new SyncThread();
// SyncThread syncThread1 = new SyncThread();
Thread thread0 = new Thread(syncThread0, "SyncThread0");
Thread thread1 = new Thread(syncThread0, "SyncThread1");
thread0.start();
thread1.start();
}
运行结果:
SyncThread1:0
SyncThread1:1
SyncThread1:2
SyncThread1:3
SyncThread1:4
SyncThread0:0
SyncThread0:1
SyncThread0:2
SyncThread0:3
SyncThread0:4