Java线程同步实例
2016-11-03 21:50
411 查看
Java线程同步实例
package lab8.wu; public class mythread { public static void main(String[] args) { new Create("thread1"); new Create("thread2"); } } class Create implements Runnable { static int a = 10; private Thread t; public Create(String name) { t = new Thread(this); t.setName(name); t.start(); } public void run() { System.out.println("进入同步前"+t.getName()+" "+a); synchronized (this) { Thread t = Thread.currentThread(); for (int i = 0; i < 3; i++) { a++; System.out.println(t.getName() + " " + i+" a="+a); try { Thread.sleep(1000); } catch (InterruptedException e) { } } } } }
运行结果,thread1和thread2是乱序的,synchronized并未起到作用,synchronized锁住的是两个对象,彼此之间不造成影响:
对比代码:
package lab8.wu; public class mythread2 { public static void main(String[] args) { Create2 create2=new Create2("th"); Thread th1=new Thread(create2,"thread1"); Thread th2=new Thread(create2,"thread2"); th1.start(); th2.start(); } } class Create2 implements Runnable { static int a = 10; private Thread t; public Create2(String name) { t = new Thread(this); t.setName(name); t.start(); } public void run() { Thread t = Thread.currentThread(); System.out.println("进入同步前"+t.getName()+" "+a); synchronized (this) { for (int i = 0; i < 3; i++) { a++; System.out.println(t.getName() + " " + i+" a="+a); try { Thread.sleep(1000); } catch (InterruptedException e) { } } } } }
运行结果,synchronized起到作用,在synchronized中的代码同一时间不能被不同的线程同时进入:
相关文章推荐
- Java使用synchronized修饰方法来同步线程的实例演示
- Java实例说明 100个线程同时向一个银行账户中存入1元钱,在没有使用同步机制和使用同步机制情况下的执行情况
- java线程的同步中notify和wait方法之生产消费实例讲解
- Java线程同步、同步方法实例详解
- Java线程之锁对象Lock-同步问题更完美的处理方式代码实例
- Java线程同步实例分析
- Java线程同步方法实例总结
- java 线程之对象的同步和异步(实例讲解)
- java线程同步操作实例详解
- Java线程同步实例 生产者 消费者问题分析
- java线程同步实例
- JAVA线程同步实例教程
- java多个实例对象线程同步无效的原因以及解决方案
- java线程同步
- Java线程及同步(synchronized)样例代码
- java线程同步
- Java线程同步 2
- Java线程同步 1
- Java线程:线程的同步与锁
- 用Java线程获取优异性能(II)——使用同步连载线程访问关键代码部份