大家好,小弟刚学多线程,有个概念一直没搞懂,之前一直说如果在方法在创建多个实例对象然后调用其方法不会有线程安全问题,就是struts2 都说每个请求创建了一个新的实例就不会有线程问题。
那我做了个例子,运行结果一直都有问题,特请教
有2个类
public class Outputter2 {
//输出name
public void output(String name) {
int len = name.length();
for (int i = 0; i < len; i++) {
System.out.print(name.charAt(i));
}
System.out.println();
}
}
///////////////////////////
public class Outputter4 implements Runnable {
private String name;
public Outputter4(String name){
this.name = name;
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println(name);
new Outputter2().output(name);
}
}
public static void main(String[] args) {
//每次都创建新的Outputter4
new Thread(new Outputter4("aaaa")).start();
new Thread(new Outputter4("bbbb")).start();
}
}
打印效果,不正确:
aaaa
bbbb
abbbb
aaa
bbbb
aaaa
baaaa
bbb
aaaa
请帮忙解释,我一直没弄明白错在那里?
是不是由于name引起的,如果name不使用实例变量,怎么传递?
在方法里使用对象变量是安全的是怎么解释?
谢谢!!!!
相关推荐
是一个java多线程打字程序,由于我们期末要用,所以到这里请教来了,你们这破网站还总政那个没用的麻烦不啊?
实验11 多线程处理 实验12 I/O及文件处理 实验目的:掌握并使用Java中的I/O和文件。 心得体会:对于该实验,由于比较难,只是基本掌握了文件读写的方法和规则,还有待17周JAVA实训时继续攻坚克难。 ...
7. **多线程**:Java提供了强大的多线程支持,通过Thread类或Runnable接口可以实现并发执行。理解线程同步和互斥的概念,以及synchronized关键字、wait()、notify()方法的使用,是进行并发编程的基础。 8. **设计...
这包括但不限于Java基础语法、面向对象编程思想、集合框架、多线程编程、异常处理等内容。只有建立了完整的知识框架,才能更好地理解和运用Java语言。 #### 3. 实践出真知 理论学习固然重要,但更重要的是实践。...
3. **进阶难**:从入门到精通的过程非常漫长且充满挑战,特别是在高级特性如多线程、网络编程等方面,难度骤增。 4. **心理压力**:长时间的学习而无法看到显著进步容易让人产生挫败感,甚至放弃学习。 #### 三、...
此外,还要掌握IO流、多线程、网络编程等核心知识。 第五步,学习Java的高级特性,如反射、注解、动态代理等,这些特性让Java在实际开发中更具灵活性和扩展性。 第六步,接触并理解设计模式。设计模式是软件工程中...
此外,培训通常还会涵盖异常处理、集合框架、IO流、多线程、网络编程等关键领域,这些都是实际开发中不可或缺的部分。 在实训过程中,学员们不仅强化了理论知识,还提升了实践能力。实训项目使学员有机会将课堂上学...
8. **多线程**:为了提高性能,游戏可能会使用多线程来处理不同任务,比如一个线程负责渲染,另一个线程处理游戏逻辑。 9. **资源管理**:游戏中往往有音效、图片、字体等资源,Java中的`InputStream`和`...
1. Java多线程:在本实训中,使用Thread类创建显示时钟的线程,确保时钟动画的实时性。 2. GUI设计:运用Swing组件构建时钟界面,设置字体、颜色和布局,如使用JFrame、JLabel等。 3. 日历和时间处理:使用...
例如,在处理并发问题时,理解计算机系统的工作原理(包括操作系统、硬件架构等)对于解决死锁、线程安全等问题至关重要。此外,深入理解网络协议(如TCP/IP)、数据库原理等也可以帮助JAVA程序员更好地设计高性能的...
- **多线程支持**:Java内置了对多线程的支持,允许开发人员轻松地编写并发程序。 - **静态类型检查**:Java是一种静态类型语言,在编译阶段就会进行类型检查,有助于提前发现并解决类型错误。 #### 二、Java基础...
14. **Chapter 14 - 多线程**:介绍线程的创建、同步机制(synchronized、wait/notify、ReentrantLock),以及线程池。 15. **Chapter 15 - 文件与文件流**:涉及文件的创建、读写、复制,以及文件流的操作。 16. ...
1. J2SE:Java标准版,包含Java基础语法、集合框架、I/O、多线程等。 2. J2EE:Java企业版,涉及Web开发、EJB、JMS、JPA等。 3. J2ME:Java微型版,主要用于嵌入式设备和移动开发。 在自学Java的过程中,持续学习和...
7. 线程:Java支持多线程编程,允许并发执行任务。线程管理是提高程序效率的重要手段,但同时也需要处理好同步和互斥问题,以避免数据竞争。 在学习过程中,保持信心、恒心和毅力至关重要。遇到困难时,不应轻易...
在论文中,作者提到将Java理论知识应用于实际项目,这涵盖了Java的基础语法、类与对象、异常处理、多线程、集合框架、IO流等核心概念。在开发企业网站管理系统时,可能会涉及到数据库交互,因此Java的JDBC(Java ...
8. **多线程**: 复习线程的创建(通过Thread类或Runnable接口)、线程同步(synchronized关键字、wait/notify机制)、线程池等概念。 9. **网络编程**: Java提供了Socket编程接口,可以用于实现客户端和服务端的...
随着大众化、小型化趋势的加剧,网络聊天在当今已经不算新鲜事物,聊天室可以更好的方便大家交流,请教或探讨问题,同时也能开阔视野... 本聊天室系统,主要利用DELPHI用于底层网络通信Socket组件,使用了多线程技术。
此外,实习还强化了对Java集合框架、异常处理、IO流、多线程、网络编程等进阶主题的理解。 其次,实习期间的项目实践让我们的编程能力得到了显著提升。在实际项目中,我们不仅要编写代码,还要考虑代码的可读性、可...
- Java语言的优势在于其简单性、面向对象、多线程、分布性、跨平台和安全性,这些特性使得Java成为企业级应用开发的首选语言。 - 实习生首先学习了Java编程环境,包括编译器、解释器和开发工具如Visual J++,这有...
- 资深/专家:能够对现有代码进行优化,具有重构能力,熟悉多线程编程等高级特性。 2. **数据库、缓存、事务等** - **考核点**:熟悉关系型数据库原理,了解SQL优化方法,掌握缓存机制(如Redis)及事务管理。 -...