• 线程学习一:创建线程


    线程创建有两个方法:

    • 创建Thread或者其子类
    • 执行start()方法

    创建线程的方法也有两个:

    一、实现Runnable接口的run方法

     1 public class ThreadTest implements Runnable {
     2 
     3     @Override
     4     public void run() {
     5         for (int i = 0; i < 100; i++)
     6             System.out.println(Thread.currentThread().getName() + "........"+i);
     7 
     8     }
     9 
    10     public static void main(String[] args) {
    11         ThreadTest aa = new ThreadTest();
    12         ThreadTest bb = new ThreadTest();
    13         Thread t1 = new Thread(aa);
    14         Thread t2 = new Thread(bb);
    15         t1.start();
    16         t2.start();
    17         
    18 
    19     }
    20 
    21 }

    二、继承Thread类重写run方法

     1 public class ThreadExtendsTest extends Thread { 
     2 
     3     ThreadExtendsTest(String name) {
     4         super(name);
     5     }
     6 
     7     @Override
     8     public void run() {
     9         for (int i = 0; i < 100; i++) {
    10             System.out.println(this.getName() + "..." + i);
    11         }
    12     }
    13 
    14     public static void main(String[] args) {
    15         ThreadExtendsTest aa = new ThreadExtendsTest("aa");
    16         ThreadExtendsTest bb = new ThreadExtendsTest("bb");
    17         aa.start();
    18         bb.start();
    19     }
    20 
    21 }

    其它:多个线程共享同一份资源

     1 public class ThreadTest implements Runnable {
     2     private int count = 300;
     3 
     4     @Override
     5     public void run() {
     6         for (int i = 0; i < 100; i++)
     7             System.out.println(Thread.currentThread().getName() + "........" + count--);
     8     }
     9 
    10     public static void main(String[] args) {
    11         ThreadTest aa = new ThreadTest();
    12         Thread t1 = new Thread(aa);
    13         Thread t2 = new Thread(aa);
    14         Thread t3 = new Thread(aa);
    15         t1.start();
    16         t2.start();
    17         t3.start();
    18 
    19     }
    20 
    21 }

    注意:

    • 两个线程的执行时间并不是平均分配的,而是根据JVM调度的。
    • Thread类中有带线程名值的创建方法,而且如果不创建名字,系统也会自动生成线程名称。
    • 当两个线程都执行start()方法之后,同时在跑的有三个线程,当两个副线程的run()方法执行完毕以后,结束线程并且只剩下一个主线程。
  • 相关阅读:
    java常用api
    常用命令
    mysql常用命令
    特性
    centos ubuntu 软件安装
    WebStorm创建Vue项目记录
    登录oracle官网下载资料账号可以使用(保存)(转)
    java学习之路—JDBC—DBUtils
    Linux从入门到精通(第4章--桌面环境)
    Linux从入门到精通(第2章--Linux安装)
  • 原文地址:https://www.cnblogs.com/gforce/p/5894184.html
Copyright © 2020-2023  润新知