-
针对Thread和Runnable对于同一资源处理: class MyThread extends Thread{} class MyRunnable implements Runnable{} public static void main(String[] args){ MyThread t1 = new MyThread(); MyThread t2 = new MyThread(); MyThread t3 = new MyThread(); //注意:此时t1,t2,t3是堆内存中实例出的三个对象,对于它们所有属性也独立的 MyRunnable r = new MyRunnable(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); Thread t3 = new Thread(r); //注意:t1,t2,t3虽然是堆中的三个不同对象,但是此时的r是一个,所以三个线程引用r中的资源也是共有的 } 由此可以看出:Runnable可以实现资源共享,而Thread资源独立查看全部
-
两种方式的比较: Runnable方式可以避免Thread类由于Java单继承带来的缺陷; Runnable的代码可以被多个线程(Thread实例)共享,适合于多个线程处理同一资源的情况查看全部
-
创建线程的两种方法查看全部
-
线程创建的两种方式: 1、继承Thread类,覆写run()方法 2、实现Runnable接口,作为参数传递到Thread类中查看全部
-
Runnable方式可以避免Thread方式由于Java单继承特性所带来的缺陷 Runnable的代码可以被多个线程(Thread实例)共享,适合于多个线程处理统一资源的情况查看全部
-
tid nid可以帮助找到cpu,内存占用率很高的线程查看全部
-
jstack:主要用来生成当前时刻线程的快照查看全部
-
守护线程:一般运行于后台,为其它的用户线程(运行在前台,处理具体任务)来服务,当所有的用户线程都消亡,没有可服务的对象,守护线程即会自动消亡。例如检测服务,常见例子如JAVA的垃圾回收机制。所有在守护线程里面不适合做计算以及业务逻辑的操作 创建方式:在线程启动之前(调用start()方法),调用setDaemon(threadName,true)来申明这个是守护线程即可查看全部
-
test查看全部
-
创建:新建一个新线程对象,如Thread thd=new Thread(); 就绪:创建了线程对象后,调用了线程的start()方法(注意:此时线程只是进入了线程队列,等待获取CPU服务,具备了运行的条件,但并不一定已经开始运行了). 停止:线程的run()方法执行完毕,或者线程调用了stop()方法,线程便进入终止状态. 阻塞:一个正在执行的线程在某些情况下,由于某种原因而暂时让出了CPU资源,暂停了自己的执行,便进入了阻塞状态,如调用了sleep()方法查看全部
-
thread snapshot查看全部
-
setDaemon查看全部
-
.....查看全部
-
阻塞...查看全部
-
阻塞...查看全部
举报
0/150
提交
取消