Java线程Thread中的同步块synchronized
2015-12-01 21:31
543 查看
<strong><span style="font-size:24px;">Java中的多线程机制,其中同步代码块为:</span> <span style="font-size:24px;"> synchronized(object) { }</span></strong> public class ThreadTest { public static void main(String[] args) { // TODO Auto-generated method stub Test t=new Test(); Thread td1=new Thread(t,"代售点1"); Thread td2=new Thread(t,"代售点2"); Thread td3=new Thread(t,"代售点3"); td1.start(); td2.start(); td3.start(); } } class Test implements Runnable { int num=2000; public void run() { while(true) { <span style="color:#FF0000;">synchronized(this){</span> try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(num>0) { num--; System.out.println(Thread.currentThread().getName()+"正在销售第"+num+"张票"); } if(num==1990) { System.out.println(Thread.currentThread().getName()+"今天不卖票了"); break; } <span style="color:#FF0000;">}</span> } } } 其中:<pre name="code" class="java">if(num==1990) { System.out.println(Thread.currentThread().getName()+"今天不卖票了"); break; }这句可以使卖过1990票的代售点退出while循环。break直接退出。Java中建立线程的方法有俩种:
1:通过某个类继承Thread类,并且重写run()方法来实现 (不推荐)
2:通过某个类实现Runnable接口,并且重写run()方法 来实现
不推荐使用第一种的原因:Java是单继承的,如果某个类extends了Thread类,将不能再继承别的类,影响了代码的延展性。
俩种方法的区别:启动方法不同。
方法1:直接 线程名.start();即可启动线程。
方法2:先new一个线程,如:
<span style="font-size:18px;">Test t=new Test();</span>然后建立线程对象,并且将t放入其中,
<span style="font-size:18px;">Thread td1=new Thread(t,"代售点1");</span>最后通过td1.start()来启动线程。
相关文章推荐
- 异常解决:java.net.ConnectException: Call To Master/127.0.0.1:9000 failed on connection exception
- Java拾遗(一):浅析Java子类和父类的实例化顺序 及 陷阱
- Java虚拟机2:Java内存区域及对象
- Java对象表示方式2:XStream实现对对象的XML化
- Java lambda内容的介绍
- 水仙花数Java
- spring namespacehandler问题
- Android stadio导入eclipse项目
- Eclipse快捷键大全(转载)
- eclipse安装ADT问题
- Java对象表示方式1:序列化、反序列化和transient关键字的作用
- 第二章 Java语言基础(2)
- Java Enum
- android studio导入eclipse项目方式及相关问题解决办法
- java子类实例初始化过程
- Java新手之路——Day05 运算符
- Java相似知识点区别
- java编程思想(读书笔记):1.对象导论
- Java的抽象类和内部类
- MyEclipse使用经验归纳