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.csdn.net/ns_code/article/details/17161237