通过继承Thread类实现线程与实现Runnable接口实现线程有什么区别
//下面这个程序是:继承线程类通过线程同步方法实现同步会出错,通过线程同步块实现同步却没有错。
//请问这二者有何区别??
class SellThread extends Thread
{
static Object obj=new Object();
static int tickets=50;
public void run()
{
while(tickets>0)
{
/*synchronized(obj)//线程同步块
{
if(tickets>0)
{
System.out.println(Thread.currentThread
().getName( )+" sell tickets:"+tickets);
tickets=tickets-1;
try
{
Thread.sleep(1);
}
catch(Exception e)
{
e.printStackTrace();
}
}*/
sell();
}
}
public synchronized void sell()//线程同步方法
{
if(tickets>0)
{
System.out.println(Thread.currentThread().getName( )+" sell
tickets:"+tickets);
tickets--;
}
}
}
class TicketsSystem_this_obj
{
public static void main(String args[])
{
SellThread st1=new SellThread();
SellThread st2=new SellThread();
SellThread st3=new SellThread();
SellThread st4=new SellThread();
st1.start();
st2.start();
st3.start();
st4.start();
/* try
{
Thread.sleep(10);
}
catch(Exception e)
{
e.printStackTrace();
}*/
}
}
//请问这二者有何区别??
class SellThread extends Thread
{
static Object obj=new Object();
static int tickets=50;
public void run()
{
while(tickets>0)
{
/*synchronized(obj)//线程同步块
{
if(tickets>0)
{
System.out.println(Thread.currentThread
().getName( )+" sell tickets:"+tickets);
tickets=tickets-1;
try
{
Thread.sleep(1);
}
catch(Exception e)
{
e.printStackTrace();
}
}*/
sell();
}
}
public synchronized void sell()//线程同步方法
{
if(tickets>0)
{
System.out.println(Thread.currentThread().getName( )+" sell
tickets:"+tickets);
tickets--;
}
}
}
class TicketsSystem_this_obj
{
public static void main(String args[])
{
SellThread st1=new SellThread();
SellThread st2=new SellThread();
SellThread st3=new SellThread();
SellThread st4=new SellThread();
st1.start();
st2.start();
st3.start();
st4.start();
/* try
{
Thread.sleep(10);
}
catch(Exception e)
{
e.printStackTrace();
}*/
}
}
...全文
相关推荐
Java中继承thread类与实现Runnable接口的比较
Java 中继承 Thread 类与实现 Runnable 接口的比较在 Java 中,创建线程有两种方式:继承 Thread 类和实现 Runnable 接口。
详解Java中Thread 和Runnable区别
Runnable接口的实现可以通过Thread类来执行。Thread类和Runnable接口的主要区别在于继承性。
java 多线程Thread与runnable的区别
Java 多线程 Thread 与 Runnable 的区别Java 多线程技术是 Java 语言中的一种基础技术,用于实现多任务并发执行的功能。
java实现多线程的两种方式继承Thread类和实现Runnable接口的方法
### 实现Runnable接口如果你的类已经继承了另一个类(Java不支持多重继承),则可以选择实现`Runnable`接口。
详解多线程及Runable 和Thread的区别
Thread 和 Runnable 的区别继承 Thread 类和实现 Runnable 接口都是实现多线程的有效方法,但它们之间有着很大的区别:* 继承 Thread 类需要继承 Thread 类,并重写


Java SE
