欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 读后感 > 教育的水平线程盟超读后感

教育的水平线程盟超读后感

时间:2013-10-27 07:02

一个程序至少有一个进程,一个进程至少有一个线程。

这句话对吗

进程是一个容器,或者是一个沙盒,是OS分配给代码执行的一个环境.从这个意义来说,他是惰性的.线程是一个动作,OS负责配发一个独立的CPU时间片(或者一个核,由OS来抽象)来执行这个动作.从这个意义来说,他是动态的.二者虽然都有一个程,但从OS的角度来看区别还是很大的.到了OS底层,没有进程和线程的概念.只有指令+数据的概念.但从上层角度来说.答案是是的.

一个程序至少有一个进程,一个进程至少有一个线程。

这句话对吗

进程是一个容器,或者是一个沙盒,是OS分配给代码执行的一个环境.从这个意义来说,他是惰性的.线程是一个动作,OS负责配发一个独立的CPU时间片(或者一个核,由OS来抽象)来执行这个动作.从这个意义来说,他是动态的.二者虽然都有一个程,但从OS的角度来看区别还是很大的.到了OS底层,没有进程和线程的概念.只有指令+数据的概念.但从上层角度来说.答案是是的.

\\\/* 编写3个线程分别实现各自运行时间,第一个线程每隔1秒运行一次,第二每隔5秒第三个每隔10秒 *\\\/

首先,要实现线程类有两种方法。

一种就是实现接口,就想你上面的SZ这个类。

另一种就是继承Thread类。

你直接new一个Thread严格来说也没错误。

你的错误我给你写几条:1、main方法里s没有调用start()方法,自然s.t1也就没有被实例化。

2、即使改正了第1,也可能先执行s.t1.start(),而不是s.start()所以s.t1仍然没被实例化,调用它的start()自然也错误。

最后,为了满足你的要求我给你写了个简单的,相信你能看懂,其实没你想象的那么复杂,如下:class Clock3{public static void main(String[] args){new MyThread(线程1,1000).start();new MyThread(线程2,5000).start();new MyThread(线程3,10000).start();}}class MyThread extends Thread {private long m = 0;MyThread(String name, long m) {super(name);this.m = m;}@Overridepublic void run() {\\\/\\\/ TODO Auto-generated method stubint x = 0;try{while(x<100){System.out.println(Thread.currentThread().getName()+线程已经运行);x++;Thread.sleep(m);}}catch(Exception e){}}}我测试过了,没问题

\\\/* 编写3个线程分别实现各自运行时间,第一个线程每隔1秒运行一次,第二每隔5秒第三个每隔10秒 *\\\/

首先,要实现线程类有两种方法。

一种就是实现接口,就想你上面的SZ这个类。

另一种就是继承Thread类。

你直接new一个Thread严格来说也没错误。

你的错误我给你写几条:1、main方法里s没有调用start()方法,自然s.t1也就没有被实例化。

2、即使改正了第1,也可能先执行s.t1.start(),而不是s.start()所以s.t1仍然没被实例化,调用它的start()自然也错误。

最后,为了满足你的要求我给你写了个简单的,相信你能看懂,其实没你想象的那么复杂,如下:class Clock3{public static void main(String[] args){new MyThread(线程1,1000).start();new MyThread(线程2,5000).start();new MyThread(线程3,10000).start();}}class MyThread extends Thread {private long m = 0;MyThread(String name, long m) {super(name);this.m = m;}@Overridepublic void run() {\\\/\\\/ TODO Auto-generated method stubint x = 0;try{while(x<100){System.out.println(Thread.currentThread().getName()+线程已经运行);x++;Thread.sleep(m);}}catch(Exception e){}}}我测试过了,没问题

java线程可以在运行在多个cpu核上吗

ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。

使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一个Thread,而是Thread的局部变量。

  ThreadLocal是Thread的局部变量。

所以,在Java中编写线程局部变量的代码相对来说要笨拙一些,因此造成线程局部变量没有在Java开发者中得到很好的普及。

  ThreadLocal的接口方法:  ThreadLocal类接口很简单,只有4个方法,先来了解一下:  void set(Object value)  public void remove()  将当前线程局部变量的值删除,目的是为了减少内存的占用,该方法是JDK 1.5 新增的方法。

需要指出的是,当线程结束后,对应该线程的局部变量将自动被垃圾回收,所以显式调用该方法清除线程的局部变量并不是必须的操作,但它可以加快内存回收的速度。

  protected Object initialValue()  返回该线程局部变量的初始值,该方法是一个protected的方法,显然是为了让子类覆盖而设计的。

这个方法是一个延迟调用方法,在线程第1次调用get()或set(Object)时才执行,并且仅执行1次。

ThreadLocal中的缺省实现直接返回一个null。

  值得一提的是,在JDK5.0中,ThreadLocal已经支持泛型,该类的类名已经变为ThreadLocal

API方法也相应进行了调整,新版本的API方法分别是void set(T value)、T get()以及T initialValue()。

  ThreadLocal为每一个线程维护变量的副本的思路:  在ThreadLocal类中定义了一个ThreadLocalMap,每一个Thread中都有一个该类型的变量——threadLocals——用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本。

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片