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