package com.subject01; public class ThreadOrRunnable { public static void main(String[] args) {
System.out.println("Thread输出内容:");
// 三个线程为三个不同的对象资源,资源无法得到共享。由于不是同一个对象,所以也不会存在线程安全的问题
new ThreadDemo().start();
new ThreadDemo().start();
new ThreadDemo().start(); System.out.println("Runnable接口实现输出内容:");
//三个线程共同使用同一个对象资源,可以达到资源共享的。但同时也会存在线程不安全的问题,所以对象资源需要添加同步设置
RunnableDemo runDemo = new RunnableDemo();
new Thread(runDemo).start();
new Thread(runDemo).start();
new Thread(runDemo).start();
} }
class ThreadDemo extends Thread{
private int ticket = 5 ;
@Override
public void run() {
while(ticket>0){
System.out.println("ticket="+ticket--);
}
}
} class RunnableDemo implements Runnable{ private int ticket = 5 ;
@Override
public void run() {
// 存在线程不安全,需要添加同步设置
synchronized (this) {
while(ticket>0){
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.err.println("ticket="+ticket--);
}
} } }
http://blog.****.net/ns_code/article/details/17161237