首页 技术 正文
技术 2022年11月15日
0 收藏 477 点赞 2,727 浏览 2127 个字

1.创建线程的方式:

 /**
* StudySjms
* <p>
* Created by haozb on 2018/2/28.
*/
public class ThreadDemo extends Thread {
/**
* 定义线程的名字
* @param name
*/
public ThreadDemo(String name) {
super(name);
} @Override
public void run() {
for (int i = ; i < ; i++) {
System.out.println(this.getName()+":"+i);
}
} public static void main(String[] args) {
for (int i = ; i < ; i++) {
new ThreadDemo("name"+i).start();
}
}
}
 /**
* StudySjms
* <p>
* Created by haozb on 2018/2/28.
*/
public class ThreadDemo implements Runnable {
@Override
public void run() {
for (int i = ; i < ; i++) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
} public static void main(String[] args) {
/* Runnable demo = new ThreadDemo();
for (int i = 0; i < 3; i++) {
new Thread(demo,""+i).start();
}*/ // 也可以直接采用内名内部类方式来创建
final int num = ;
for (int i = ; i < ; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = ; i < num; i++) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
},""+i).start();
}
}
}

Executors其实就是工厂类,用来创建各种的线程池;

 import java.util.concurrent.*; /**
* StudySjms
* <p>
* Created by haozb on 2018/2/28.
*/
public class ThreadPool {
public static void main(String[] args) {
//ExecutorService pool = Executors.newFixedThreadPool(2);
// 这种是固定线程数的线程池,控制了现场的最大并发量
//ExecutorService pool = Executors.newCachedThreadPool();
// 这种没有长度限制,会自动控制池的大小,如果任务多了,会创建新现场,如果任务少了,会回收线程
//ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);
/*
这种例子是延迟3秒执行
pool.schedule(new Runnable() {
@Override
public void run() { }
},3,TimeUnit.SECONDS);*/
/*
这种是延迟1秒 每3秒执行一次
pool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() { }
},1,3,TimeUnit.SECONDS);*/
/*
相当于单线程执行任务,有顺序
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
*/ ExecutorService pool = new ThreadPoolExecutor(,,0L, TimeUnit.MILLISECONDS,new LinkedBlockingDeque<Runnable>());
for (int i = ; i < ; i++) {
final int tmp = i;
Runnable run = new Runnable() {
@Override
public void run() {
long time = (long)(Math.random()*);
System.out.println(Thread.currentThread().getName()+":"+tmp+"sleeping"+time); try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
pool.execute(run);
}
pool.shutdown();
}
}

线程的基本控制方法:

Thread.sleep();   使线程睡眠,放弃cpu

join :使一个线程等待另一个线程完事在执行。eg: t1里面,t2.join()   t1暂停执行,立即执t2,t2执行完事之后再去执行t1

  可以有参数,t2.join(10);  表示为t1只等t210毫秒就继续执行了

interrupt():中断线程,有些时候需要在线程执行过程中中断线程。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,484
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,899
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,732
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,485
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,125
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,285