【Java】多线程<1>-概念及Thread类基本使用

问题一:多线程是什么?
一个程序可能包括多个并发执行的任务,线程指其中一个任务从头到尾的执行流。简单来说,多线程就是在一个程序中提供并发执行多个任务。

问题二:什么时候才要用到多线程?
简单来说,就是当你的程序要在同一时间执行多个任务的时候就要用到多线程。例如:经典的飞机游戏、坦克游戏中,敌人的飞机坦克和玩家的飞机坦克就由不同线程来控制他们的行动。(动态画面的制作也能用多线程实现)

问题三:如何使用创建和使用线程?
Java提供线程类Thread以完成线程的基本功能:新建、运行、中止、阻塞、唤醒等。

红色标记的为常用方法
以下是Thread类:
+Thread()          //创建一个空线程
+Thread(task: Runnable)         //为指定任务创建一个线程
+start(): void           //启动线程使方法run()被JVM调用
+isAlive(): boolean  //测试线程当前是否正在运行
+setPriority(int): void  //设置线程的优先级p(范围从1到10)
+join():void  //等待当前线程结束(阻塞方法)
+sleep(millis:long): void //使线程睡眠指定时间
+yield(): void  //使线程暂停并允许其他线程执行
+interrupt(): void //中断线程

创建执行线程的两种方法:
1:
class tThread implements Runnable{
     public void run(){}
}
Thread t = new Thread(new tThread());
t.start();
2:
class tThread extends Thread{
     public void run(){}
}
tThread t = new tThread();
t.start();

例子:
下面给出一个程序创建两个任务以及使用线程并发执行这两个任务:
public class TestThread {
        public static void main(String[] args) {
              //新建TestThread实例
              TestThread tt = new TestThread();
              //创建两任务以及对应线程
              Thread printA = new Thread(tt.new PrintA(1000));
              Thread printB = new Thread(tt.new PrintB(1000));
              //运行线程
              printA.start();
              printB.start();
       }
       class PrintA implements Runnable{
               int times =0;
              PrintA( int times){
                      this.times =times;
              }
               @Override
               public void run() {
                      // TODO Auto-generated method stub
                      for(int i=0;i<times;i++){
                           System. out.println("AAAAAAAAAA" );
                     }
              }
       }
       class PrintB implements Runnable{
               int times =0;
              PrintB( int times){
                      this.times =times;
              }
               @Override
               public void run() {
                      // TODO Auto-generated method stub
                      for(int i=0;i<times;i++){
                           System. out.println("BBBBBBBBBB" );
                     }
              }
       }
}


第一个任务:打印1000行"AAAAAAAAAA"
第二个任务:打印1000行"BBBBBBBBBB"
运行此程序,两个线程共享CPU,在控制台上轮流打印A、B

此例子仅演示线程的创建和执行,其他常用方法可自行实验。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值