多线程(1)

1.创建线程的两种方式
package com.gyj.student;

/**

  • 多线程

  • @author guoyajie
    */
    public class Test1 {

    public static void main(String[] args){
    //======================================
    Thread thread = new Thread(){

     	@Override
     	public void run(){
     		while(true){
     			try{
     				Thread.sleep(5000);
     			}catch(Exception e){
     				e.printStackTrace();
     			}
     			System.out.println("当前线程名:" + Thread.currentThread().getName());
     			System.out.println("当前this线程名:" + this.getName());
     		}
     	}
     };
     thread.start();
     //===========================================
     Thread thread2 = new Thread(new Runnable() {
     	
     	@Override
     	public void run() {
     		while(true){
     			try{
     				Thread.sleep(5000);
     			}catch(Exception e){
     				e.printStackTrace();
     			}
     			System.out.println("Runnable当前线程名:" + Thread.currentThread().getName());
     			//System.out.println("当前this线程名:" + this.getName());
     		}
     	}
     });
     thread2.start();
     //区别runable是Tread的参数
     //=========================================
     new Thread(new Runnable() {
     	
     	@Override
     	public void run() {
     		while(true){
     			try{
     				Thread.sleep(5000);
     			}catch(Exception e){
     				e.printStackTrace();
     			}
     			System.out.println("Runnable当前线程名:" + Thread.currentThread().getName());
     			//System.out.println("当前this线程名:" + this.getName());
     		}
     	};
     }){
     	public void run() {
     		while(true){
     			try{
     				Thread.sleep(5000);
     			}catch(Exception e){
     				e.printStackTrace();
     			}
     			//子类先运行
     			System.out.println("Thread当前线程名:" + Thread.currentThread().getName());
     		}
     	};
     }.start();	
    

    }
    }
    多线程不会提高运行效率,性能更低

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这只是最简单的使用,后续如果热度高的话,再录个视频教程详解吧,学到的好评给一个~ 前  言 · 之前刚接触鱼刺的时候发了个 【鱼刺线程池,自动换IP,队列重试框架(https://bbs.125.la/forum.php?mod=viewthreadtid=14178530 )】 发现热度还不错,大家还是挺喜欢多线程的操作。 常言道:授人以鱼不如授人以渔,鱼刺类模块一直感觉确实稳定好用,对于新手来说一些命令还是比较难理解的。但不知道为什么一直没有详细教程。 今天趁这次开源大赛曾个热度 讲一下鱼刺多线程应用 线程池Ex的使用方法,废话不多说,直接开始吧。 注: 所讲内容都是自己使用所得出来的经验,如果讲的不好或者不对得地方请大佬指导哈。 已经请示过作者了: @Bints 首先我们需要下载并载入 教程以 鱼刺类_多线程应用5.43为主:鱼刺类_多线程应用v5.4.zip (112.11 KB, 下载次数: 228) 我们先来看看“鱼刺类_线程池Ex”的命令: 几个参数先说一下: 1.初始栈大小 :可以理解为申请内存的空间的初始大小(个人是这么理解的)。必须是4KB的倍数且最小8KB(8192字节)所以最小为8*1024,不用担心太少,任何情况下Windows会根据需要动态延长堆栈的大小 2.是否在UI线程 :如果填写了真,那么在循环里面会加个"处理事件()"的命令来让消息循环 去队列处理窗口组件操作 防止执行的时候窗口卡死,(记得在哪里看到过线程处理事件()是没有效果的。不太懂~~) 1. 置_初始栈大小()  设置初始栈的大小,也可以在创建()的第五个参数设置。此命令可以在线程池工作设置。 2. 置_空闲回收事件()  设置线程空闲回收的时间,也可以在创建()的第三个参数设置,此命令可以在线程池工作设置。 3. 置_最大线程数()  设置最大线程数量,也可以在创建()的第二个参数设置,此命令可以在线程池工作设置。 4. 创建() :顾名思义 创建线程池。 5. 投递任务() ,向线程投递一个可执行的函数子程序指针,和投递任务_int()基本一模一样,在内部自动转换成指针地址到整数(子程序指针) 6. 投递任务_int()  向线程投递一个可执行的函数指针地址 7. 等待任务动态()  :就是等待线程,到指定的等待时间才会往下执行,可以用 触发任务动态来取消等待。 8. 触发任务动态() .这个需要和等待任务动态一起用,也可以理解为 放弃等待的任务 继续向下执行 9. 暂停()  暂停正在工作的线程,配合 事件_暂停() 使用效果最佳,后续会详解。 10. 事件_暂停()   需要配合暂停命令。如果系统发出了暂停命令返回假 如果正常工作返回真,如果正在销毁的话也会返回假。 11. 继续()  取消暂停。 12. 取_队列任务数()  获取队列的正在执行的线程数量。 13. 取_空闲任务数()  获取队列的空闲线程数量,严格控制线程数量可以用到此命令,后续会详解。 14. 取_是否空闲()  获取线程池状态是否彻底空闲,也就是说任务是否全部执行完毕,可以作为后续投递任务完任务后的判断。 15. 取_线程池容量()  获取线程池的可执行的最小线程数量 16. 取_最大线程容量()  获取线程可执行的最大线程数量 17. 取_执行线程数()  获取正在工作的线程数量 18. 取_状态()  获取线程正在工作的状态,返回值为常量的: #线程池_未启动 #线程池_正在工作,#线程池_正在销毁,#线程池_正在创建 下面开始实战,将会用到所有线程池Ex的命令 首先载入模块后在程序集变量创建一个线程池Ex。 创建一个按钮。在按钮事件写入:要执行的任务数量为1000 线程数量为50 如果已知 执行数量为1000了 直接计次循环 写下去可能执行不够准确,因为不排除会投递失败的情况。所以我们: 如下图:只有在投递任务成功的时候 计次才会递增。 但是每次循环都会判断 递增的计次是否小于任务数量, 如果小于就继续执行,如果大于就说明投递的任务数量已经达到了目标任务数,就可以跳出循环了 上图:投递任务()命令 传递了两个参数 一个是局_计次 一个是 0, 投递 局_计次 可以在任务函数获取到 用处也比较大,比如可以用作超级列表框的索引。(前提是已经插入了) 等待任务动态().为什么要等待呢,又是时候你投递的是内存指针,投递进去后等待 任务函数将它获取到并释放完毕后触发任务动态就好了 比如: 这样看着没什么问题 是吧~~ 内存方面的知识后续再说把 先掠过,只是这样演示这节只讲线程池Ex 但是如果我们模拟一下真是线程场景 加个延时() 如上图所示,如果有延时的话线程池投递完任务直接销毁 会导致任务被断,或者放弃了

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值