Java多线程四种实现模板
作者:网络转载 发布时间:[ 2016/1/12 11:45:28 ] 推荐标签:编程语言 线程
主函数调用:
//使用第四种方式,类实例化开启线程(实现方式)
new Thread(new RunnableTest()).start();
附测试代码:
1 class ThreadUseDemo
2 {
3 public static void main(String[] args)
4 {
5 //System.out.println("Hello World!");
6 //使用第一种方式,开启线程
7 new Thread()
8 {
9 public void run()
10 {
11 for(int i=0;i<100;i++)
12 {
13 System.out.println(Thread.currentThread().getName()+"线程方式1"+ i);
14 }
15
16 }
17 }.start();
18 //主线程在这里运行
19 for(int i=0;i<100;i++)
20 {
21 System.out.println(Thread.currentThread().getName()+"前台线程"+ i);
22 }
23
24 //使用第二种方式,开启线程
25 Runnable r =new Runnable()
26 {
27 public void run()
28 {
29 for(int i=0;i<100;i++)
30 {
31 System.out.println(Thread.currentThread().getName()+".....方式2++"+ i);
32 }
33 }
34 }; //不可或缺
35 new Thread(r).start();
36
37 //使用第三种方式,类实例化开启线程(继承方式)
38 new ThreadTest().start();
39 //使用第四种方式,类实例化开启线程(实现方式)
40 new Thread(new RunnableTest()).start();
41 }
42 }
43
44 class ThreadTest extends Thread
45 {
46 public void run()
47 {
48 for(int i=0;i<100;i++)
49 {
50 System.out.println(Thread.currentThread().getName()+".....类的方式(extends)----"+ i);
51 }
52 }
53
54 }
55 class RunnableTest implements Runnable
56 {
57 public void run()
58 {
59 for(int i=0;i<100;i++)
60 {
61 System.out.println(Thread.currentThread().getName()+".........类的方式(implements)----++"+ i);
62 }
63 }
64 }
线程学习告一段落了,之后关于线程其他的知识点,这里记下笔记,用的时候再说:
1)线程停止:
通过在主函数中控制标志位来中止子线程的循环状态,特殊情况:
当现场处于冻结状态(wait)时,读取不到flag标记,那么线程不会结束。解决办法:
Interrupt:清楚冻结状态,当然此时会抛异常,在异常中更改标志位即可
wait ---
sleep ----===》一砖头下去---》清醒(运行态)抛异常->有人强制结束,可以获取运行资格,操作标记为false,循环判断为假,线程结束
2) 守护线程
eg: t1.setDaemon(true);//此时t1线程为守护线程,开启后和前台线程共同运行,互抢CPU资格,但当主线程(前台)结束后,守护线程也自动停止(依赖于前台主线程)
3) join()
eg: t1.start();t1.join();//t1在start后,join表示向CPU申请执行权(CPU交出,处于wait状态),t1和其他正在运行的线程一起争夺,直到t1结束后交还资格给CPU
4) 线程组:谁开启的线程,属于某个组(几乎用不到)
5)线程优先级:1--10,默认为5,经常用得到有:MIN_PRIORITY (1);MAX_PRIORITY (10); NORM_PRIORITY (5 )
定义:
这是java线程的优先级:
java.lang.Thread
public static final int MAX_PRIORITY 10
public static final int MIN_PRIORITY 1
public static final int NORM_PRIORITY 5
使用:
1 //第一种方案
2 class MyThead implements Runnable
3 {
4 public void run()
5 {
6 for (int i = 1; i <= 10; i++)
7 {
8 System.out.println(Thread.activeCount() + "thread======>AAA");
9 }
10 }
11 }
12 //第二种方案
13 class MyThreadRunnable extends Thread
14 {
15
16 public void run()
17 {
18 for (int i = 1; i <= 10; i++)
19 {
20 System.out.println(Thread.activeCount() + "thread======BBB");
21 }
22 }
23
24 }
25
26 public class TheadMain
27 {
28 public static void main(String[] args)
29 {
30 MyThead myThead = new MyThead();
31 Thread thread = new Thread(myThead);
32 MyThreadRunnable thread2 = new MyThreadRunnable();
33 thread.start();
34 thread.setPriority(Thread.MIN_PRIORITY);
35 thread2.start();
36 thread2.setPriority(Thread.MAX_PRIORITY);
37 }
38 }
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Java性能测试有哪些不为众人所知的原则?Java设计模式??装饰者模式谈谈Java中遍历Map的几种方法Java Web入门必知你需要理解的Java反射机制知识总结编写更好的Java单元测试的7个技巧编程常用的几种时间戳转换(java .net 数据库)适合Java开发者学习的Python入门教程Java webdriver如何获取浏览器新窗口中的元素?Java重写与重载(区别与用途)Java变量的分类与初始化JavaScript有这几种测试分类Java有哪四个核心技术?给 Java开发者的10个大数据工具和框架Java中几个常用设计模式汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南