要想实现多线程,就必须在主线程中创建新的线程对象. 不论什么线程一般具有5种状态,即创建,就绪,执行,堵塞,终止. 创建状态: 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时,他已经有了对应的内存空间和其它资源,但还处于不可执行状态. 就绪状态: 新建线程对象后,调用该线程的start()方法能够启动线程.当线程启动时,线程进入就绪状态.此时,线程将进入线程队列排队,等待CPU服务,这表明它已经具备了执行条件.-------(执行start()方法仅仅是进入就绪状态,并…
Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程进行操作.下面来看一下Thread类中的静态方法: 1.currentThread() currentThread()方法返回的是对当前正在执行线程对象的引用.看一个重要的例子,然后得出结论: public class MyThread04 extends Thread { static { System.o…
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); } } } -----------…
用代码演示String类中的以下方法的用法 (1)boolean isEmpty(): 判断字符串是不是空串,如果是空的就返回true (2)char charAt(int index): 返回索引上的字符 (3)String toLowerCase(): 字符串转成小写 (4)String toUpperCase(): 字符串转成大写 (5)String repalce(char oldChar, char newChar): 将字符串中的老字符,替换为新字符 (6)String repalc…
首先看看官方说明: interrupt()方法 其作用是中断此线程(此线程不一定是当前线程,而是指调用该方法的Thread实例所代表的线程),但实际上只是给线程设置一个中断标志,线程仍会继续运行. interrupted()方法 作用是测试当前线程是否被中断(检查中断标志),返回一个boolean并清除中断状态,第二次再调用时中断状态已经被清除,将返回一个false. isInterrupted()方法 作用是只测试此线程是否被中断 ,不清除中断状态  下面我们进行测试说明: 定义一个MyThr…
start()方法被用来启动新创建的线程,而且start()内部调用了run()方法, 区别: 当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动: start()方法才会启动新的线程…
在java的 java.util.concurrent.locks包中,ReentrantLock类实现了lock接口,lock接口用于加锁和解锁限制,加锁后必须释放锁,其他的线程才能进入到里面执行,否则出现死锁现象. lockInterruptibly()方法介绍: 此方法返回的为获取锁的方法,但是当线程调用了interrupt()方法后,此方法将会返回一个异常,导致线程的中断.即线程中断. 代码实例如下: package TestThread.ThreadLockDemo; import j…
1.join()方法的作用: 例如有一个线程对象为Thread1,在main()方法中调用Thread1.join()方法可使得当前线程(即主线程)阻塞,而执行Thread1线程. 2.源码分析(以上面的例子为例) /** * Waits at most {@code millis} milliseconds for this thread to * die. A timeout of {@code 0} means to wait forever. * * <p> This implemen…
使当前线程从执行状态(运行状态)变为可执行态(就绪状态). 当前线程到了就绪状态,那么接下来哪个线程会从就绪状态变成执行状态呢?可 能是当前线程,也可能是其他线程,看系统的分配了.…
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获取线程的名…