线程初步:
1、创建线程的两种方式:
通过Thread t = new Thread()创建,需要继承java.lang包中Thread类重写run()方法,然后让t.start()启动线程;
通过实现Runnable接口也重写了run()方法,接着把Runnable创建出来的对象当参数把它传进去
Runnable r = new XxxThread();
new Thread(r).start();
2、后台(daemon)线程 – 在后台提供一种通用服务的线程。当所有非后台线程结束之后,如main方法之类的线程,程序就终止了。
换句话说,即使daemon Thread还在运行,当其它非daemon线程都已经结束之后,程序就已结束!调用t.setDaemon(true);
3、获得当前线程及其名称:Thread.currentThread().getName()
4、给线程设置名称:
(1)对于实现了Runnable接口的线程则很简单,因为Java的API提供了这种实现:Thread(Runnable target, String name);
new Thread(t,"辅助线程1").start();
(2)对于继承自Thread类的线程类因为API没直接提供,但可以通过构造方法把名称作为参数传进去,然后客户端即可使用之。
public MyThread4(String name){
super(name);
}
Thread t = new MyThread4("某线程");
5、关于线程与垃圾回收的一个误解:
下面一共new出来5个线程,从JVM内存分析来看,当这个t它走出循环后应该说是要被垃圾回收的,但它没这么做
因为这是new出来的一个对象,存在堆中,跳出循环时,因为没有引用指向他所以垃圾回收会去把他回收走,但JVM
显然没有这么做,因为从另一个角度来看,这个线程对象t它还一直调用着run()方法,所以并不会被垃圾回收器给回收
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
Runnable t = new MyThread2();
new Thread(t).start();
}
for (int i = 0; i < 500; i++) {
System.out.println("Main ing ...."+i);
}
}
在main方法中,并不持有对线程对象的引用,对于普通对象,垃圾回收器将回收那些不再被引用的对象,
但线程对象比较特殊,只有在它的run方法结束之后,垃圾回收器才会考虑回收它
线程的基本控制:
1、isAlive():判断当前执行的线程是否还活着,可用于确定顺序的执行,比如当某个线程执行时候,
直到等他完全执行完了,下面的线程才有机会执行,如:下面的mt线程
MyThread mt = new MyThread();
mt.start();
while(mt.isAlive()){}
for (int i = 0; i < 500; i++) {
2、线程让步:yield():这是从概率上来讲的,一般会是当前线程让步给其他线程先执行自己最后执行,但并不好说
因此下面代码中mt线程先执行完,最后执行完的肯定是main中线程,即调用了yield方法的线程
mt.start();
for (int i = 0; i < 500; i++) {
System.out.println(Thread.currentThread().getName()+": "+i);
Thread.yield();
}
3、线程睡眠:sleep(millons)这个参数指的是毫秒数,即要睡多长的时间然后继续工作,但他也不是绝对的时间大概睡多久而已
4、线程的优先级:Thread的静态属性(MIN_PRIORITY、NORM_PRIORITY【5】、MAX_PRIORITY)一般在1-10之间
5、线程的吊起:a.join()
分享到:
相关推荐
总结来说,"C#语言多线程初步理解"这个主题涵盖了线程创建、线程安全、线程同步以及在WinForm应用中的实践。通过深入学习和实践这些概念,开发者可以编写出更加高效和响应迅速的应用程序。在“WindowsForms...
本文将探讨如何在Unity中使用C#实现线程的基本概念,包括启动、终止、控制线程优先级以及处理线程间的数据共享问题。 一、创建和启动C#线程 在C#中,线程由`System.Threading`命名空间定义。首先,你需要包含这个...
JavaScript多线程初步学习-附件资源
多线程初步设计,多线程的调试,多核编程。通过并行实现多任务处理
多线程和Socket编程初步教程,非常适合初学者。
### Ruby多线程编程初步入门 #### 一、引言 多线程编程是现代软件开发中的重要组成部分,尤其对于需要高效并发处理的任务而言更是如此。Ruby作为一种灵活且功能强大的编程语言,在支持多线程方面提供了丰富的工具...
### Windows多线程多任务设计初步 在现代操作系统中,多线程和多任务处理是提升软件性能和响应性的关键。Windows操作系统通过支持多线程和多任务,使得多个应用程序和进程能够并行运行,提高了系统的整体效率。下面...
在"QT线程初步学习"这个主题中,我们将深入理解如何利用QThread类来管理和控制程序的并发执行,以提高应用程序的性能和响应性。 首先,QThread是Qt对标准C++线程的封装,提供了更高级别的接口,使得开发者可以更...
java程序员初学多线程的可以看看哦 csdn积分只要一分哦
### Linux下的多线程编程初步 #### 线程的概念 在探讨多线程编程之前,我们首先需要明确什么是线程。线程是程序中能够被操作系统调度并发执行的最小单位,它存在于进程之中,是进程的一个执行路径。与进程相比,...
在Linux环境下,`top`、`htop`命令可以初步查看线程,而`gdb`、`strace`、`jstack`等工具则能进行深度分析。Java开发者可以使用JDK自带的`jconsole`、`jvisualvm`或第三方工具如`VisualVM`进行Java应用的线程监控。 ...
在Windows操作系统中,多线程程序设计是一种常见的技术,它允许多个任务或子任务同时运行,以提高程序的效率和响应性。本篇文章主要探讨了如何在不使用MFC类库的情况下,利用Windows API来创建和管理多线程。 ...
标题中的“一个初步的用VB写“多线程”程序的例子”表明这是一个关于使用Visual Basic (VB)编程语言实现多线程技术的示例项目。多线程是计算机编程中的一个重要概念,允许程序同时执行多个任务,从而提高效率和响应...
多线程的了解,初步实现
通过以上讲解,你应该对MFC中的`CCriticalSection`有了初步了解,并能开始在自己的多线程项目中运用这一同步机制。不过,记住,线程同步是一个复杂的话题,需要结合具体场景灵活运用,避免潜在的并发问题。
进程和线程是操作系统中两个基本的概念,它们是程序执行的两种不同模式。理解它们的关系对深入理解计算机系统的工作原理至关重要。 首先,我们要明白“进程”是什么。在计算机科学中,进程可以被看作是程序的执行...
wasd操作,英文输入法,单线程,比较笨重的东西,内存量尽管要求不大,不过浪费了很多资源,没有进行进一步的优化,有问题私信联系
9. 实验9:线程初步.doc 线程使得程序可以并发执行,提高系统效率。实验会介绍线程的创建、同步和通信,包括Thread类的使用、Runnable接口的实现,以及synchronized关键字和wait/notify机制。 通过这些实验,学生...
在VB.Net编程中,多线程是一...通过以上介绍,你应该对VB.Net中的多线程有了初步的理解。在实际项目中,根据需求合理地运用多线程技术,可以提高程序的性能和用户体验。不断实践和学习,你将更加熟练地掌握多线程编程。