zoukankan      html  css  js  c++  java
  • 线程不会替换上一个线程

    调用一次方法,相当于新建一个线程

        public static void main(String[] args) throws Exception{
            thread("a");
            thread("b");
            thread("c");
        }
        public static void thread(String title){
            Thread t=new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        for(int i=0;i<10000;i++){
                            System.out.println(title+":"+i);
                        }
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            });
            t.start();
        }

    那么,结果就会有title为a、b、c同步执行,

    ...
    a:68032
    a:68033
    a:68034
    a:68035
    a:68036
    c:49724
    c:49725
    c:49726
    c:49727
    c:49728
    c:49729
    c:49730
    ...
    

     当创建此线程类对象时一个新的线程得以创建,并进入到线程新建状态。通过调用线程对象引用的start()方法,使得该线程进入到就绪状态,此时此线程并不一定会马上得以执行,这取决于CPU调度。

         总结

            1、新建状态(new):新创建了一个线程对象。
            2、就绪状态(runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取cpu的使用权。
            3、运行状态(running):就绪状态的线程获取了cpu,执行程序代码。
            4、阻塞状态(blocked):阻塞状态是线程因为某种原因放弃cpu使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:
        (一)、等待:运行的线程执行wait()方法。
        (二)、同步:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则jvm会把该线程放入锁池中。
        (三)、其他:运行的线程执行sleep()。
            5、死亡状态(dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

    但是,最好不要有太多的线程,一旦有多个线程,cpu处理会变慢,java代码也会比较缓慢

    朱星翰

    <script type='text/javascript'>alert()</script>

  • 相关阅读:
    类的继承
    面向对象的编程
    Python的模块
    ES6_12_Set和Map数据结构以及for of循环
    ES6_11_字符串、数值、数组、对象扩展
    ES6_09_Generator函数
    ES6_08_Iterator遍历器
    ES6_07_Symbol属性
    ES6_05_三点运算符和形参默认值
    Sqlstate解释
  • 原文地址:https://www.cnblogs.com/yzssoft/p/7061113.html
Copyright © 2011-2022 走看看