码迷,mamicode.com
首页 > 编程语言 > 详细

同步线程

时间:2016-08-14 11:29:04      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

首先,我们来说一说同步线程和异步线程

同步线程:按顺序执行线程内容

异步线程:哪个线程先抢占到CPU资源就走那个线程

那么,怎样解决线程同步的问题呢?

解决方案有两种:

1.先创建一个Person类,类中有两个方法peron1和person2,分别在void的之前加上同步锁synchronized,这样就可以保证线程同步

public class Person {
    public synchronized void person1()
    {
        System.out.print("弓");
        System.out.print("长");
        System.out.print("成");
        System.out.println();
    }
    public synchronized void person2()
    {
        System.out.print("弓长");
        System.out.print("长弓");
        System.out.print("弓长成");
        System.out.println();
    }
}

然后创建两个自定义类,各自继承Thread类,在run方法中分别调用Person类中的person1和person2的方法

public class MyThread1 extends Thread{
    public Person p;
    @Override
    public void run() {
        for (int i = 1; i < 500; i++) {
            
            p.person1();
        }
        
    }
}
public class MyThread2 extends Thread{
    public Person p;
    @Override
    public void run() {
        for (int i = 1; i < 500; i++) {
            p.person2();
        }
    }
}

然后在Test测试类中就可以开启线程了

public class Test2 {
    public static void main(String[] args) {
        Person p=new Person();
        MyThread1 my1=new MyThread1();
        my1.p=p;
        my1.start();
        MyThread2 my2=new MyThread2();
        my2.p=p;
        my2.start();
    }

}

执行结果:

技术分享

这种方法就可以保证线程同步,不会因为抢占CPU出现两个线程异步的效果了.

2.在Person类中的两个方法中加入同步锁方法体,也能解决线程异步的效果

public class Person {
    public void person1()
    {
        synchronized(this)
        {
            System.out.print("弓");
            System.out.print("长");
            System.out.print("成");
            System.out.println();
        }
        
    }
    public synchronized void person2()
    {
        synchronized (this) {
            System.out.print("弓长");
            System.out.print("长弓");
            System.out.print("弓长成");
            System.out.println();
        }
        
    }
}

控制台输出结果:

技术分享

 

同步线程

标签:

原文地址:http://www.cnblogs.com/S2223/p/5769613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!