首页 > 其他分享 >线程的一些入门知识

线程的一些入门知识

时间:2023-02-20 11:04:00浏览次数:36  
标签:入门 Thread 知识 MyThread start thread 线程 new


1.创建线程
    A.继承Thread父类

        重写run方法,在run方法中实现线程的任务
        
        启动线程,调用start方法
    
    B.实现接口Runnable
        实现run方法
    //创建一个实现Runnable接口的类的对象
    TestThreadDemo1 t1 = new TestThreadDemo1();
    //创建一个线程类的对象
    Thread tt = new Thread(t1);
    tt.start();
    
2.线程的状态以及相互转换(线程的生命周期)

    新建,就绪,运行,挂起,结束

3.同步
    在一定时间内程序块只能由一个线程运行
    异步:在同一时间内可以有多个线程同时运行同一段程序

    synchronized 关键字来定义同步


A方法来实现线程任务:

优点是使用十分简单,但是需要继承,由于java是单继承的

所以一般只在简单的小程序中才会使用继承方法


/**
* 继承Thread的类覆盖run方法
* 主线程new 该类,调用start()方法来开始该方法
* CUP要调用哪个线程是说不准的
* */
public class ExtendThread {
public static void main(String[] args) {
new MyThread().start();
new MyThread().start();
new MyThread().start();
new MyThread().start();
new MyThread().start();
new MyThread().start();
/*
* 打印例子:
* Thread-0走
* Thread-1走
* Thread-3走
* Thread-4走
* Thread-2走
* Thread-5走
*/
}
}


public class MyThread extends Thread{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"走");
super.run();
}
}


B方法来实现线程任务:

优点是可以同时implement其他类,不像方法A,只能继承该类就不能再继承了

缺点就是写起来麻烦了一点点

但是一般都是使用这个方法的


/**
* 创建一个实现Runnable接口的类的对象,覆盖run()
* 创建一个线程类的对象,调用start方法起点线程
* CUP要调用哪个线程是说不准的
*/
public class ExtendThread {
public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread thread_1 = new Thread(myThread);
thread_1.start();
Thread thread_2 = new Thread(myThread);
thread_2.start();
Thread thread_3 = new Thread(myThread);
thread_3.start();
Thread thread_4 = new Thread(myThread);
thread_4.start();
Thread thread_5 = new Thread(myThread);
thread_5.start();
/*
* 打印例子:
* Thread-1走
* Thread-4走
* Thread-3走
* Thread-2走
* Thread-0走
*/
}
}


public class MyThread implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"走");
}
}





标签:入门,Thread,知识,MyThread,start,thread,线程,new
From: https://blog.51cto.com/u_15741949/6067963

相关文章

  • Filter_概述与Filter_快速入门
    Filter_概述 Filter:过滤器1.概念生活中的过滤器:净水器,空气净化器,土匪web的过滤器:当访问服务器的资源时,过滤器可以将请求拦......
  • 【C/C++】知识点
    序链接备注1C语言0长度数组(可变数组/柔性数组)详解_CHENGJian的博客-CSDN博客_0数组 2     ......
  • 基础知识-数据包和帧
    什么是数据包和帧数据包和帧是小块数据,当它们组合在一起时,会形成更大的信息或消息。但是,它们在OSI模型中是两个不同的东西。帧位于第2层-数据链路层,这意味着没有IP......
  • 810~811 Filtter概述,快速入门
    Filtter:过滤器生活中的过滤器:净水器,土匪,空气净化器web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。过滤器的作用:......
  • Mybatis_缓存知识
    应用程序与数据库进行交互,相对耗时,通过缓存查询结果,可以在一定程度上减少此耗时。  在SQL映射文件中,一个select标签对应的一个statement对象。(以下session指的是SqlS......
  • C++11环境安装【快速入门】
    第一步:安装编译器:https://winlibs.com/ 第二步:解压出来后 第三步:配置环境变量:bin目录 第四步:测试:gcc-v  第五步:关注作者微信公众号......
  • 4线程,2个对i加,2个对i减
    packagetest1;/***设计4个线程,其中2个线程,每次对i加1,另外两个线程,每次对i减一**@authorAdministrator**/publicclassThread2{publicstaticvoidmain(Strin......
  • 简单多线程卖票代码
     publicclassThread2{publicstaticvoidmain(String[]args){ShareDatad=newShareData();//两个窗口卖票newThread(d).start();newThread(d).st......
  • 子线程先执行10次,主线程执行5次,子线程再执行10次,主线程再执行5次,如此反复3次
    packagecom.mhm.test1;/***子线程跑10次,主线程跑5次,然后子线程再跑10次,主线程再跑5次,往返3次*@authorMahone**/publicclassTest2{publicstaticvoidmain(S......
  • Windows黑客编程之远线程注入
    描述通过在进程中创建线程的方式,将dll注入到目标进程准备知识远线程注入的原理在目标进程空间内申请一段内存,写入dll的路径,然后利用ZwCreateThreadEx函数在目标进程......