您的位置:首页 > 编程语言 > Java开发

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()来启动线程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: