import java.lang.Thread;
public class Test{
public static void main(String[] args){
ThreadTest t=new ThreadTest("goodteam");
t.start();
ThreadTest t2=new ThreadTest("lzs");
t2.start(); }
}
class ThreadTest extends Thread{
private String name;
public ThreadTest(String name){
this.name=name;
}
public void run(){
synchronized(this){
for(int i=0;i<200;i++){
System.out.print(name+"#"+i+"#");
if(i%20==0)
System.out.println();
}
}
}
}
public class Test{
public static void main(String[] args){
ThreadTest t=new ThreadTest("goodteam");
t.start();
ThreadTest t2=new ThreadTest("lzs");
t2.start(); }
}
class ThreadTest extends Thread{
private String name;
public ThreadTest(String name){
this.name=name;
}
public void run(){
synchronized(this){
for(int i=0;i<200;i++){
System.out.print(name+"#"+i+"#");
if(i%20==0)
System.out.println();
}
}
}
}
class ThreadTest extends Thread{
private String name;
private static int i=0;
public ThreadTest(String name){
this.name=name;
}
public void run(){
synchronized(i){
for(;i<200;i++){
System.out.print(name+"#"+i+"#");
if(i%20==0)
System.out.println();
}
}
}
}
这样才实现并发:public class Test {
static Object o = null;
public static void main(String[] args) {
ThreadTest t = new ThreadTest(); Thread t1 = new Thread(t,"A");
t1.start();
Thread t2 = new Thread(t,"B");
t2.start(); }
}class ThreadTest implements Runnable { public ThreadTest() {
}
public void run() {
synchronized (this) {
for (int i = 0; i < 200; i++) {
System.out.println(Thread.currentThread().getName() + "#" + i + "#");
if (i % 20 == 0)
System.out.println();
}
}
}
}
同步对象锁定,是否能同步,主要看锁定对象的地址是否相同.LZ就是使用使用的this.this代表的是自己对象,地址不同.故自能自己对象同步自己.对象之间是不能同步.1楼使用的i,但他加上static,i属于类,java对一个类只分配一个地址,故地址相同.所以能2个对象之间同步.
public class Test{
public static void main(String[] args){
ThreadTest t=new ThreadTest("goodteam");
t.start();
ThreadTest t2=new ThreadTest("lzs");
t2.start(); }
}
class ThreadTest extends Thread{
private String name;
private static Object sysObject = new Object();
public ThreadTest(String name){
this.name=name;
}
public void run(){
synchronized(sysObject){
for(int i=0;i<200;i++){
System.out.print(name+"#"+i+"#");
if(i%20==0)
System.out.println();
}
}
}
}