zoukankan      html  css  js  c++  java
  • 线程学习一:创建线程

    线程创建有两个方法:

    • 创建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()方法执行完毕以后,结束线程并且只剩下一个主线程。
  • 相关阅读:
    SharePoint 2013 中的SQL Server 安全
    SharePoint 2013 的HTML5特性之响应式布局
    SharePoint 2013 一些小技巧
    SharePoint 2013 排错之"Code blocks are not allowed in this file"
    SharePoint 2013 创建搜索中心及搜索设置
    SharePoint 2013 使用PowerShell创建State Service
    SharePoint 2013 内容部署功能简介
    SharePoint 使用PowerShell恢复误删的网站集
    SharePoint 自定义WebPart之间的连接
    linux之misc及使用misc创建字符设备
  • 原文地址:https://www.cnblogs.com/gforce/p/5894184.html
Copyright © 2011-2022 走看看