多线程实现方式有两种,第一个是 继承 Thread,或者继承 Runable 接口
package com.study.thread; public class ThreadTest extends Thread{ private int count=5; @Override public void run() { count --; System.out.println(Thread.currentThread().getName() + " count " + this.count); } public static void main(String[] args) { /** * 分析 当多线程访问 mythread run 方法时, 已排队的方式执行处理(这里排队时按住 cpu 分配顺序执行的) */ ThreadTest threadTest = new ThreadTest(); Thread t1 = new Thread(threadTest,"test1"); Thread t2 = new Thread(threadTest,"test2"); Thread t3 = new Thread(threadTest,"test3"); Thread t4 = new Thread(threadTest,"test4"); Thread t5 = new Thread(threadTest,"test5"); t1.start(); t2.start(); t3.start(); t4.start(); t5.start(); } }
打印结果如下:
多线程访问公众资源变量的时候,是不安全的,可以通过
synchronized 来进行处理
可以看到 数据正常输出,当时请注意 线程不是 按照 test1 test2 test3 test4 test5 输出的,这里执行顺序 并不是我们代码的顺序,而是 通过 cpu 分配资源执行的顺序