Synchronized 这个要知道你锁的对象是谁
package chdy;
public class jiaotidayin {
public static void main(String[] args){
MyTask task = new MyTask();
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 1; i < 10; i += 2 ){
task.prin(i);
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 10; i += 2 ){
task.prin(i);
}
}
});
t1.setName("线程1");
t2.setName("线程2");
t2.start();
t1.start();
}
}
class MyTask{
public synchronized void prin(int num){
try {
this.notify();
System.out.println("当前线程" + Thread.currentThread().getName() + " : " + num);
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
AtomciInteger 无需用到所
public class jiaotidayin {
public static void main(String[] args){
AtomicInteger at = new AtomicInteger(0);
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
while(at.get() < 100){
if(at.get() % 2 == 0){
System.out.println(at.get());
at.getAndIncrement();
}
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
while(at.get() < 100){
if(at.get() % 2 == 1){
System.out.println(at.get());
at.getAndIncrement();
}
}
}
});
t1.setName("线程1");
t2.setName("线程2");
t2.start();
t1.start();
}
}
原子类交替打印ABC
public class jiaotidayin {
public static void main(String[] args){
AtomicInteger at = new AtomicInteger(0);
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
while(at.get() < 100){
if(at.get() % 3 == 0){
System.out.println("A");
at.getAndIncrement();
}
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
while(at.get() < 100){
if(at.get() % 3 == 1){
System.out.println("B");
at.getAndIncrement();
}
}
}
});
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
while(at.get() < 100){
if(at.get() % 3 == 2){
System.out.println("C");
at.getAndIncrement();
}
}
}
});
t1.setName("线程1");
t2.setName("线程2");
t1.start();
t2.start();
t3.start();
}
}