本文主要通过使用java多线程的方式,实现一个线程遍历100以内的偶数,另一个遍历100以内的基数,相关内容为本人课堂中所学知识,希望能够为你带来一些启发和建议。
public class exer {
public static void main(String[] args) {
MyThread1 myThread1 = new MyThread1();
MyThread2 myThread2 = new MyThread2();
myThread1.start();
myThread2.start();
}
}
class MyThread1 extends Thread{ //用来遍历偶数
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (i%2==0)
System.out.println(Thread.currentThread().getName() + ":" +i);//获取线程名
}
}
}
class MyThread2 extends Thread{ //用来遍历奇数
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (i%2!=0)
System.out.println(Thread.currentThread().getName() + ":" +i);
}
}
第二种实现方式:通过创建匿名子类的方式进行操作
public class ThreadDemo {
public static void main(String[] args) {
//方法2:创建Thread类的匿名子类的方式
new Thread(){
public void run() {
for (int i = 0; i < 100; i++) {
if (i%2==0)
System.out.println(Thread.currentThread().getName() + ":" +i);
}
}
}.start();
new Thread(){
public void run() {
for (int i = 0; i < 100; i++) {
if (i%2!=0)
System.out.println(Thread.currentThread().getName() + ":" +i);
}
}
}.start();
}
}
多线程的一些阐述:
为什么要是用多线程?
1.在一个程序中,有很多的操作是非常耗时的,如数据库读写操作,IO操作等,如果使用单线程,那么程序就必须等待这些操作执行完成之后才能执行其他操作。使用多线程,可以在将耗时任务放在后台继续执行的同时,同时执行其他操作。
2.可以提高程序的效率。
3.在一些等待的任务上,如用户输入,文件读取等,多线程就非常有用了。
缺点:
1.使用太多线程,是很耗系统资源,因为线程需要开辟内存。更多线程需要更多内存。
2.影响系统性能,因为操作系统需要在线程之间来回切换。
3.需要考虑线程操作对程序的影响,如线程挂起,中止等操作对程序的影响。
4.线程使用不当会发生很多问题。
总结:多线程是异步的,但这不代表多线程真的是几个线程是在同时进行,实际上是系统不断地在各个线程之间来回的切换(因为系统切换的速度非常的快,所以给我们在同时运行的错觉)。
线程的创建基础知识:
🔶Thread类的介绍
-
Java语言的JVM允许程序运行多个线程,它通过Java.lang.Thread类来体现。
-
Thread类的特性
-
每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体。
-
通过该Thread对象的start()方法来启动这个线程,而非直接调用run()
-
创建方法介绍
-
Thread():创建新的Thread对象
-
Thread(String threadname):创建线程并指定线程实例名
-
Thread(Runnable target):指定创建线程的目标对象,它实现了Runnable接口中的run方法
-
Thread(Runnable target,String name):创建新的Thread对象。
-
-
使用方法介绍
-
void start(): 启动线程,并执行对象的run()方法
-
run(): 线程在被调度时执行的操作
-
String getName(): 返回线程的名称
-
void setName(String name):设置该线程名称
-
static Thread currentThread(): 返回当前线程。
在Thread子类中就 是this,通常用于主线程和Runnable实现类
-
static void yield():线程让步
暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程
若队列中没有同优先级的线程,忽略此方法
-
join() :当某个程序执行流中调用其他线程的 join() 方法时,调用线程将 被阻塞,直到 join() 方法加入的 join 线程执行完为止 。
低优先级的线程也可以获得执行
-
static void sleep(long millis):(指定时间:毫秒)
令当前线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队.
抛出InterruptedException异常
-
stop(): 强制线程生命期结束,不推荐使用
-
boolean isAlive():返回boolean,判断线程是否还活着
-
-
-