新手问个多线程的问题 java里只能允许单一继承,即一个子类只能有一个父类,所以java中如果一个类继承了某一个类,同时又想采用多线程技术的时候,就不能用Thread类产生线程,此时要用Runnable接口来创建线程。 而且使用Runnable接口创建多个线程时,这些线程的资源是共享的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是问 T t1 = new T(); Thread tt = new Thread(t1,"tt"); Thread ttt = new Thread(t1,"ttt");和T t1 = new T(); T t2 = new T(); Thread tt = new Thread(t1,"tt"); Thread ttt = new Thread(t2,"ttt");这两种方式会有哪些差别? 如果你把T对象看作是米饭。代码1只有一碗米饭,被tt和ttt同时吃(都是t1),tt吃了一口在ttt看来米饭的状态就变了(不考虑可视性的话)。而代码2有两碗米饭,tt和ttt各吃各的(一个操作t1一个操作t2),相互没有影响。 其实可以把t1和t2换成另外一种叫法:叫task(没有调用start方法的都叫task,调用start方法的叫线程。这个叫法并不严谨,只是为了好理解而已。而且task只能被线程执行,当然你也可以线程自己执行自己的task)。这就非常好理解了。第一个里:tt线程执行t1这个task,ttt线程也执行t1这个task。第二个里:tt线程执行t1这个task,ttt线程执行t2这个task。 当你的T里面包含其他资源的时候,你把这两个T的对象放到线程里面执行的话,着两个线程里面的两个T对象所用的资源是分别属于两个T的,你把一个T的对象分别放到两个线程里面执行,着两个线程是会公用你这一个T里面的资源的。比如你T 里面有一个int i=10;你run里面写个循环将i减1并打印一次,直到i等于0位置。你建立一个T对象的话,那么这两个线程公用这一个i,所以一共输出10,9,8........0;你建立两个T对象放到线程里面,那这两个线程都有自己的i,所以每一个都输出,就有两个10,9,8........0; 求大神帮忙啊。。 这个程序异常,应该是T1/T2分别不同的线程,但是目前都是相同了,为什么? jpanel中的graphics中所画得图像不能显示出来 java JDK中的一些非native方法在哪实现的? 高手来看看这是怎么回事,关于构造器 忘记了,还有一个接口的问题 急!!高手们,我是JAVA的初学者,请问jtable的setValueAT是怎么使用的?我想在输入ID后,表可以根据ID号来显示整条记录,谢谢啦! 为什么我的java编译器javac.exe打不开? java语言编一个工具 尽情发表意见喔 关于创建数据库(SQL)和表的问题 数字转换成大写程序缺陷疑问 java制图问题求教
Thread tt = new Thread(t1,"tt");
Thread ttt = new Thread(t1,"ttt");
和T t1 = new T();
T t2 = new T();
Thread tt = new Thread(t1,"tt");
Thread ttt = new Thread(t2,"ttt");
这两种方式会有哪些差别?
这就非常好理解了。
第一个里:
tt线程执行t1这个task,ttt线程也执行t1这个task。
第二个里:
tt线程执行t1这个task,ttt线程执行t2这个task。
比如你T 里面有一个int i=10;你run里面写个循环将i减1并打印一次,直到i等于0位置。
你建立一个T对象的话,那么这两个线程公用这一个i,所以一共输出10,9,8........0;
你建立两个T对象放到线程里面,那这两个线程都有自己的i,所以每一个都输出,就有两个10,9,8........0;