先看三个方法原型: public void interrupt(): public boolean isInterrupted(): public static boolean interrupted():  一.先说interrupt()方法,看注释 Interrupts this thread. Unless the current thread is interrupting itself, which is always permitted, the checkAccess method…
1. start() 和 run()的区别说明 start()方法: 它会启动一个新线程,并将其添加到线程池中,待其获得CPU资源时会执行run()方法,start()不能被重复调用. run()方法:它和普通的方法调用一样,不会启动新线程.只有等到该方法执行完毕,其它线程才能获得CPU资源. start() 和 run()的区别示例 // Demo.java 的源码 class MyThread extends Thread{ public MyThread(String name) { su…
package charpter10; public class Processor implements Runnable { @Override public void run() { for (int i = 0; i <= 100; i++) { System.out.println("中断标记位:" + Thread.currentThread().isInterrupted()); System.out.println("状态:" + Thread…
要想实现多线程,就必须在主线程中创建新的线程对象. 不论什么线程一般具有5种状态,即创建,就绪,执行,堵塞,终止. 创建状态: 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时,他已经有了对应的内存空间和其它资源,但还处于不可执行状态. 就绪状态: 新建线程对象后,调用该线程的start()方法能够启动线程.当线程启动时,线程进入就绪状态.此时,线程将进入线程队列排队,等待CPU服务,这表明它已经具备了执行条件.-------(执行start()方法仅仅是进入就绪状态,并…
package charpter06; //类实现接口public class Processor implements Runnable { // 重写接口方法 @Override public void run() { for (int i = 0; i <= 100; i++) { System.out.println(Thread.currentThread().getName() + "*****************" + i); } } } -----------…
1 package multithread; 2 3 /* 4 * 如何创建一个线程呢? 5 * 6 * 创建线程方式一:继承Thread类. 7 * 8 * 步骤: 9 * 1,定义一个类继承Thread类. 10 * 2,覆盖Thread类中的run方法. 11 * 3,直接创建Thread类的子类对象创建线程. 12 * 4,调用start方法开启线程并调用线程的任务run方法执行 13 * 14 * 15 * 16 * 17 * 18 * 可以通过Thread的getName获取线程的名…
Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程进行操作.下面来看一下Thread类中的静态方法: 1.currentThread() currentThread()方法返回的是对当前正在执行线程对象的引用.看一个重要的例子,然后得出结论: public class MyThread04 extends Thread { static { System.o…
UnSafe类中的一些重要方法 JDK中的rt.jar保重Unsafe类中提供了硬件级别的原子性操作,Unsafe类中的方法都是navtice方法,他们使用JNI的方式访问C++实现库,下面我们来了解一下Unsafe提供的几个主要方法以及编程时如何使用Unsafe类做一些事情. long objectFieldOffset(Field field)方法:返回指定变量所属类中的内存偏移量,该偏移量仅在使用该Unsafe函数中访问指定字节时使用.如下代码使用Unsafe获取变量value在Atomi…
一.线程相关的其他方法 Thread实例对象的方法 # isAlive(): 返回线程是否活动的. # getName(): 返回线程名. # setName(): 设置线程名. ​ threading模块提供的一些方法: # threading.currentThread(): 返回当前的线程对象. # threading.enumerate(): 返回一个包含正在运行的线程的list.正在运行指线程启动后.结束前,不包括启动前和终止后的线程. # threading.activeCount(…
一. 面向对象初识 我们在生活中做事都是面向过程的,前面实现一些基本逻辑功能代码也是用面向过程的语句实现的,后来学了函数,把这些功能又装到了函数里.但用面向过程的方法去写程序,只能实现一个功能,我们要实现很多功能时,需要写很多个代码块,每一个代码块的作用域都是全局的,要相对一个功能进行改动,还要考虑与其它代码块的联系,这样就造成了代码的可扩展性和维护性.那么装到函数里就好了吗?装到函数里变量只能作用于函数里,其他的函数无法使用变量.这时可以用面向对象的程序设计方法解决这些问题.面向对象的核心是对…