JAVA实现多线程入门

1:程序员可以在程序中执行多个线程,每一个线程完成一个功能,并于其他线程并发执行,这种机制被称为多线程

2:实现线程的两种方法是,分别是继承java.lang.Thread或者实现java.lang.Runnable接口

3:Thread类是java.lang包中的一个类,从这个类实例化的对象代表线程

4:完成线程真正功能的代码是放在run()方法中的,当一个类继承Thread类后,就可以在该类中覆盖run()方法,将实现该线程功能的代码写入run()方法中,然后同时调用Thread 类中的strat()方法执行线程,也就是调用run()方法。

 1 package com.thread;
 2 /**
 3  * 1:程序员可以在程序中执行多个线程,每一个线程完成一个功能,并于其他线程并发执行,这种
 4  * 机制被称为多线程
 5  * 2:实现线程的两种方法是,分别是继承java.lang.Thread或者实现java.lang.Runnable
 6  * 接口
 7  * 3:Thread泪时java.lang包中的一个类,从这个类实例化的对象代表线程
 8  * 4:完成线程真正功能的代码是放在run()方法中的,当一个泪继承Thread类后,就可以
 9  * 在该类中覆盖run()方法,将实现该线程功能的代码写入run()方法中,然后同时调用Thread
10  * 类中的strat()方法执行线程,也就是调用run()方法。
11  * @author biexiansheng
12  *
13  */
14 public class ThreadTest extends Thread {//指定类继承Thread类
15     
16     private int count=10;
17     public void run(){//重写run()方法
18         while(true){
19             System.out.print(count+" ");//打印count变量
20             if(--count==0){//使count变量自减,当自减为0时,退出循环
21                 return;
22             }
23         }
24     }
25     public static void main(String[] args) {
26         //new ThreadTest().start();
27         Thread t=new ThreadTest();//两种方法都可以实现线程运行
28         t.start();
29     }
30 }

示例如下

 1 package com.thread;
 2 /**
 3  * 1:多线程实例练习
 4  * @author biexiansheng
 5  *
 6  */
 7 public class ThreadTest1 extends Thread{
 8 
 9     //多线程的实现都是在run()方法中实现的
10     public void run(){
11         System.out.println(getName()+"登上舞台");
12         int count=0;//定义一个变量
13         while(count<=100){
14             System.out.println(getName()+"登上"+count+"次舞台");
15             count++;
16             if(count%10==0){
17                 try {
18                     Thread.sleep(2000);//捕获异常,休眠2秒
19                 } catch (InterruptedException e) {
20                     // TODO Auto-generated catch block
21                     e.printStackTrace();
22                 }//
23             }
24         }
25         System.out.println(getName()+"走下舞台");
26     }
27     public static void main(String[] args) {
28         // TODO Auto-generated method stub
29         Thread t=new ThreadTest1();
30         t.setName("Mr.Thread");
31         t.start();
32         //new ThreadTest1().start();
33         
34         //实现Runnable接口
35         Thread t1=new Thread(new RunnableTest(),"Ms.Runnable");
36         t1.start();
37     }
38 }
39 
40 class RunnableTest implements Runnable{
41 //写完上一句,类名报错,说明实现一个接口,就要实现这个接口内的方法
42     @Override
43     public void run() {
44         // TODO Auto-generated method stub
45         System.out.println(Thread.currentThread().getName()+"走上了舞台");
46         //Runnable接口实现getName必须通过线程的currentThread()方法得到
47         int count=0;//定义一个变量
48         while(count<=100){
49             System.out.println(Thread.currentThread().getName()+"登上"+count+"次舞台");
50             count++;
51             if(count%10==0){
52                 try {
53                     Thread.sleep(2000);//捕获异常,休眠2秒
54                 } catch (InterruptedException e) {
55                     // TODO Auto-generated catch block
56                     e.printStackTrace();
57                 }//
58             }
59         }
60         System.out.println(Thread.currentThread().getName()+"走下舞台");
61     
62     }
63     
64 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏移动端开发

Swift 内存管理详解

Swift内存管理: Swift 和 OC 用的都是ARC的内存管理机制,它们通过 ARC 可以很好的管理对象的回收,大部分的时候,程序猿无需关心 Swift...

1939
来自专栏编程

判断字符长度小技巧

很多人在判断字符长度的时候总会有一些疑问,到底这个算不算字符,各种转义字符,十进制,十六进制等等。这里教大家一些判断的小技巧: C语言——字符串长度的计算方法 ...

16810
来自专栏静晴轩

Javascript数组操作

使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间;思虑下,堪能如此...

4178
来自专栏Spark学习技巧

浅析Java中的final关键字

  谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今...

3217
来自专栏desperate633

浅谈javascript中的回调函数javascript中的函数匿名函数回调函数回调函数的使用回调函数实例总结

要理解javascript中的回调函数,首先我们就要对javascript中的函数有一定的理解,所以我们先从javascript中函数谈起,讲讲它与其他语言中的...

702
来自专栏difcareer的技术笔记

GNU C++的符号改编机制介绍[转]前言正文

众所周知,强大的C++相较于C增添了许多功能。这其中就包括类、命名空间和重载这些特性。 对于类来说,不同类中可以定义名字相同的函数和变量,彼此不会相互干扰。命...

754
来自专栏烂笔头

Python标准库笔记(1) — string模块

目录[-] String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作。 1. 常用方法 常用方法 描述 str.c...

3596
来自专栏Bingo的深度学习杂货店

Q720 Longest Word in Dictionary

Given a list of strings words representing an English Dictionary, find the longe...

1093
来自专栏锦小年的博客

python学习笔记3.3-高级函数技巧

在使用函数的时候,如果能合理的使用一些技巧,对于代码的阅读性以及程序的结构都是很有帮助的。常用的技巧有递归函数、高阶函数等。 1 递归函数 递归函数的定义就是在...

1899
来自专栏C/C++基础

C++纯虚函数与抽象类

为什么说虚函数是C++最重要的特性之一呢,因为虚函数承载着C++中动态联编的作用,也即多态,可以让程序在运行时选择合适的成员函数。虚函数必须是类的非静态成员函数...

1392

扫码关注云+社区