注:此文章引用于 https://www.cnblogs.com/zhaojinhui/p/5315816.html
一个任务一个人独立完成
public class SingletonThread { @SuppressWarnings("static-access") public static void main(String[] args) { Thread t =Thread.currentThread(); t.setName("单例线程"); //有1000条数据需要更新,由一个人来完成 for(int i=0;i<1000;i++){ try { System.out.println(t.getName()+"正在执行"+i); //t.sleep(500); //线程休眠中 } catch (InterruptedException e) { System.out.println("线程出现错误了!!"); } } } }一个任务多个人来同时进行并完成
① 继承Thread类,并重写run方法
public class ThreadImpl { public static void main(String[] args) { //这里也有1000条数据数据需要更新,就分3个人来进行完成 Thread t1=new ThreadTest("t1", 300); Thread t2=new ThreadTest("t2", 300); Thread t3=new ThreadTest("t3", 400); t1.start(); t2.start(); t3.start(); } } class ThreadTest extends Thread{ private String name; private int ts; public ThreadTest(String name, int ts) { this.name = name; this.ts= ts; } public void run() { try { //sleep(ms); for(int i=0;i<=ts;i++){ System.out.println(name+"正在执行"+i); } } catch (InterruptedException e) { System.out.println("线程运行中断异常"); } System.out.println("名字叫"+name+"的线程开始休眠"+ms+"毫秒"); } }② 实现Runnable接口,重写run方法
public class RunnableImpl { public static void main(String[] args) { RunnableTest r1=new RunnableTest(); Thread t=new Thread(r1); t.start(); } } class RunnableTest implements Runnable{ @Override public void run() { // TODO Auto-generated method stub } }demo:这是一个线程模拟的售票系统
class MyThread implements Runnable{ private int ticket=10; //10张车票 public void run(){ for(int i=0;i<=20;i++){ if(this.ticket>0){ System.out.println(Thread.currentThread().getName()+"正在卖票:"+this.ticket--); } } } } public class ThreadTicket{ public static void main(String[] args) { //资源共享 MyThread mt=new MyThread(); new Thread(mt, "1号窗口").start(); new Thread(mt, "2号窗口").start(); new Thread(mt, "3号窗口").start(); } }