1、概述

      1.1  Java中使用Thread类表示线程;

           所有的线程对象必须是Thread类 或 其子类的实例;

           每条线程的作用:完成一定的任务;

           Java中使用run方法来封装线程执行体;  

      1.2  默认情况下,主线程的名字是main;

                创建的多条线程的名字是:Thread-0、Thread-1、Thread-2...;

      1.3  创建、启动线程

            1.3.1  继承Thread类

                  创建继承Thread类子类--->重写run方法--->创建子类实例--->子类实例调用start方法启动线程

                      Thread.currentThread()  返回当前线程对象

                      getName()    返回当前线程的名字

                      setName()    给当前线程设置名字

                  存在的问题

                  多个线程之间无法共享变量;

package com.an;

public class MyThread extends Thread{

    private int i;

    @Override
public void run() {
for (;i<20;i++){
System.out.println(Thread.currentThread().getName()+i);
}
} public static void main(String[] args){
for (int i=0;i<30;i++){
System.out.println(Thread.currentThread().getName()+i);
if (i==15){
Thread thread=new MyThread();
thread.setName("test-one");
thread.start();
Thread thread2=new MyThread();
thread2.setName("test-two");
thread2.start();
}
}
}
}

           1.3.2  实现Runnable接口

                  创建实现Runnable接口的实现类--->重写run方法--->以实现类的实例为target,创建Thread的实例,Thread类的实例才是真正的线程对象--->Thread实例调用start方法

                  多线程之间可以共享同一个target

package com.an;

public class ThreadTarget implements Runnable {
//多线程共享资源i
private int i;
public void run() {
for (;i<20;i++){
System.out.println(Thread.currentThread().getName()+"="+i);
}
} public static void main(String[] args){
for (int i=0;i<30;i++){
System.out.println(Thread.currentThread().getName()+"="+i);
if (i==15){
ThreadTarget threadTarget=new ThreadTarget();
new Thread(threadTarget,"test-one").start();
new Thread(threadTarget,"test-two").start();
}
}
}
}

  

  

最新文章

  1. 仿美团外卖,饿了吗 两个ListView联动,左边点击切换右边,右边滑动切换左边
  2. DSP中的cmd文件
  3. Ubuntu下Apache+php+mysql网站架设详解
  4. XML解析的例子
  5. SharePoint 2013的100个新功能之网站管理(二)
  6. Android颜色转换工具类ColorUtil
  7. sql server 2008 数据库管理系统使用SQL语句创建登录用户详细步骤
  8. LIRe 源代码分析 2:基本接口(DocumentBuilder)
  9. thinkphp5中__PUBLIC__的使用
  10. attempt to open datawindow failed@安装两个PB软件
  11. 用curl模拟夹带cookie的http请求
  12. CATiledLayer
  13. DM368 UBL和u-boot的裁剪
  14. Python爬虫基础(一)urllib2库的基本使用
  15. win7 安装 node-sass报错
  16. 个人总结4-dbutils总结
  17. js自动检索输入文章长度
  18. 利用GeoServer发布web地图服务
  19. 第三次 Scrum Meeting
  20. nodejs的包管理器npm和cnpm

热门文章

  1. java生成快递单并调用打印机打印
  2. webpack CSS处理loader
  3. CNN笔记:通俗理解卷积神经网络
  4. spring-boot整合Mybatis案例
  5. LDD3 第10章 中断处理
  6. 转载 ldd3环境配置
  7. BZOJ 3687: 简单题(dp+bitset)
  8. CodeForces - 849B 几何
  9. codeforces 582A GCD Table
  10. 用js实现摇一摇功能