zoukankan      html  css  js  c++  java
  • Java学习基础- 线程

    一、学习线程需要清楚的三个概念

         1.进程:进程是一个静态的概念

         2.线程:一个进程里边有一个主线程叫main()的方法,是一个程序里边的,一个进程里边不同的执行路径。

         3.在同一时间点,一个CPU只执行一个线程。因为CPU的运行速度很快,因此我们看起来就像多线程一样。

           什么才是真正的多线程?如果你的机器是双CPU或者双核,这确确实实是多线程。

    二、线程的创建和启动

     1.利用实现Runnable接口创建和启动新线程的案例

    package cn.galc.test;
    
    public class TestThread1{
        public static void main(String args[]){
            Runner1 r1 = new Runner1();//这里new了一个线程类的对象出来
            //r1.run();//这个称为方法调用,方法调用的执行是等run()方法执行完之后才会继续执行main()方法
            Thread t = new Thread(r1);//要启动一个新的线程就必须new一个Thread对象出来
            //这里使用的是Thread(Runnable target) 这构造方法
            t.start();//启动新开辟的线程,新线程执行的是run()方法,新线程与主线程会一起并行执行
            for(int i=0;i<10;i++){
                System.out.println("maintheod:"+i);
            }
        }
    }
    /*定义一个类用来实现Runnable接口,实现Runnable接口就表示这个类是一个线程类*/
    class Runner1 implements Runnable{
        public void run(){
            for(int i=0;i<10;i++){
                System.out.println("Runner1:"+i);
            }
        }
    }

    2.继承Thread类,重写run方法来创建和启动新线程

    package cn.galc.test;
    
    public class TestThread1{
        public static void main(String args[]){
            Runner1 r1 = new Runner1();//这里new了一个线程类的对象出来
            //r1.run();//这个称为方法调用,方法调用的执行是等run()方法执行完之后才会继续执行main()方法
            Thread t = new Thread(r1);//要启动一个新的线程就必须new一个Thread对象出来
            //这里使用的是Thread(Runnable target) 这构造方法
            t.start();//启动新开辟的线程,新线程执行的是run()方法,新线程与主线程会一起并行执行
            for(int i=0;i<10;i++){
                System.out.println("maintheod:"+i);
            }
        }
    }
    /*定义一个类用来实现Runnable接口,实现Runnable接口就表示这个类是一个线程类*/
    class Runner1 implements Runnable{
        public void run(){
            for(int i=0;i<10;i++){
                System.out.println("Runner1:"+i);
            }
        }
    }

    注意:使用这两种方法开辟新的线程时,优先考虑使用实现Runnable接口的方式去开辟新的线程,因为接口的实现可以实现多个,而类的继承只能是单继承。

  • 相关阅读:
    判断文件是否存在
    peewee模块更改数据-sqlite
    Python操纵数据库:peewee
    PyQt5调用主窗口
    FHQ-Treap学习笔记
    P3047 [USACO12FEB]Nearby Cows G(树形DP)
    P2986 [USACO10MAR]Great Cow Gathering G(树形DP)
    【普及】Codeforces Round #713(Div 3) 1512A~G
    P1272.重建道路(树形背包)
    P273.有线电视网(树上背包)
  • 原文地址:https://www.cnblogs.com/linzhijie45/p/6040324.html
Copyright © 2011-2022 走看看